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

dev-main 2021-01-20 10:12 UTC

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.

record

  • 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:

Ekran Görüntüsü (111)

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:

record

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']],