tubasaygin / yii2-products
Yii2 Products Module
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Type:yii2-extension
Requires
- php: >=7.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 8.*.*
This package is not auto-updated.
Last update: 2024-05-19 22:26:02 UTC
README
Bu modül, ürün yaratma, ürünleri kategorize etme, silme ve düzenleme işlemlerini yapabilmek için yazılmıştır.
- Modül, iki tablodan oluşmaktadır. Bunlar; product ve product_category tablolarıdır. Tablolar birbirine foreign key ile bağlıdır.
- Modül ürünleri filtreleme işlemlerini gerçekleştirmektedir. Bunu yaparken de product_category tablosunu kullanır.
- Filtreleme işleminin yanında, ürün ekleme, silme, güncelleme ve yeni bir kategori ekleme, silme, güncelleme işlemlerini yapabilmektedir.
KURULUM
Modülü packagist.org sayfasında yeni bir depo olarak oluşturup projenize ekleyerek kullanabilirsiniz. Bunu yapmak için aşağıdaki komutu çalıştırın:
composer require --prefer-dist tubasaygin/yii2-products "dev-main"
Bu işlemi yaptıktan sonra projenizde backend/config klasörü altında main.php dosyanıza modül yolunu verin
'modules' => [
'products' => [
'class' => 'tubasaygin\products\Module',
],
],
Bu işlemleri bitirdikten sonra;
vagrant up
komutunu çalıştırmalısınız.
Son olarak veritabanı işlemlerinin de sağlanabilmesi için:
php yii migrate/up --migrationPath=@vendor/tubasaygin/products/migrations
Artık modülü kullanabilirsiniz!
Modül Tantımı
Modül, bir ürün yaratırken kullanıcıdan isim, fiyat gibi bilgilerin yanında aynı zamanda tarih ve yüklenecek dosya bilgilerini de ister. Bu bilgiler alınırken widget kullanılmıştır. Bu widgetları komut yardımıyla projeye eklemeniz gerekebilir:
composer require 2amigos/yii2-date-picker-widget:~1.0
Bu eklenti sayesinde tarih widgetını hazır bir şekilde kullanabilirsiniz. Ürünün resmini yüklerken de; indirdiğiniz dosya web altındaki uploads klasörüne kaydedilecektir. Bunun yanında veritabanında da dosyanın konumunu görebilirsiniz. Aşağıda bununla alakalı bir ekran görüntüsü görüyorsunuz:
Controllers
Controller sınıflarında behaviors() fonksiyonu altında "access" tanımlanmıştır. Böylece kullanıcı giriş yapmadan herhangi bir değişiklik iznine sahip olamamaktadır. Aşağıda bununla ilgili bir ekran kaydı görüyorsunuz:Ayrıca ProductController'da actionCreate() fonksiyonu altında düzenlemeler yapılmıştır. Yeni bir çalışan oluşturulduğunda ve fotoğrafı yüklendiğinde bu fotoğraflara veritabanından ulaşabilmenin yanında modül altındaki web/uploads klasöründen de ulaşabilmesi için UploadedFile kullanılmıştır, ve UploadedFile projeye import edilmiştir.
use yii\web\UploadedFile;
Views
Product views'inin içinde çalışanların departmanlarına göre filtrelenebilmesi için ArrayHelper kullanılmıştır. Yukarıda ilk verilen ekran kaydından bu işlemin yapılabildiğini görebilirsiniz...
use yii\helpers\ArrayHelper;
Aynı zamanda product view'inin altında _form.php dosyasında widgetların kullanılabilmesi, upload olaylarının gerçekleşebilmesi için aşağıdaki kod parçası eklenmiştir:
['enctype' => 'multipart/form-data']]); ?>
Layouts
Layouts dosyası advanced projesinin altında hazır gelenin haricinde yeni bir tane oluşturulmuştur. Tasarımda komple bir değişiklik yapılmamıştır. Kullanıcı çalışanlara ve departmanlara kolayca ulaşabilmesi için aşağıdaki kod parçası eklenmiştir:
['label' => 'Products', 'url' => ['/products/product/index']],
['label' => 'Categories', 'url' => ['/products/product-category/index']],