omerhamsi / yii2content
Yii2 Content 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: 2025-05-18 09:40:46 UTC
README
ÖMER HAMSİ-180202111 PAKETİ KENDİ PROJENİZE ssh ile makineye bağlanıp advanced içine gelerek composer require omerhamsi/yii2content "dev-main" komutuyla kurabilirsiniz. Migrationları kurarken php yii migrate --migrationPath=vendor/omerhamsi/yii2content/src/migrations şeklindeki komut ile tabloları oluşturabilirsiniz. http://advanced/backend/web/index.php?r=content/urunler ile projeyi çalıştırabilirsiniz. Bir modül oluştururken herhangi bir app altında bir modules klasörü oluşturup mödülümüzün adı olan bir klasör açıp onun altına da bir Module.php dosyamızın olması gerekir.Bu klasör altında controller,view,model,migrationlarımız oluşturabilir.Module.php dosyası bir base Module sınıfınfan türemiş olmalı ve basit şekilde bir init metodunu çalıştırmalı.Appe modülü tanıtmak için config dosyası altında main ya da localde modules arrayi içine mödülünüzü tanıtabiliriz. module arrayi içinde modülümüzün adını yazıcaz ve class bilgilerini yazarak tanıtmış oluruz.Module ismi controller ve action şeklinde modülümüzü çalıştırabiliriz.Aynı işlemi vendor altında bir klasör yapısıyla oluşturabiliyoruz.Bu işlemi yapabilmek için kendi github hesabımda bir yii2content deposu oluşturdum.Daha sonra makineme bağlanıp vagrant klasörü altında bir clone işlemi yaptım. git clone -b develop depomun urlesi vagrant klasörü altına yii2contenti çektim.cd yii2content ile projeme eriştim.Projem içine gerekli dosyalarımı oluşturdum.composer.json dosyası oluşturdum,src kalsörü test için bir test kalsörü oluşturdum.src kalsörü altında controllers,models ve views klasörlerimi oluşturdum.src klasörü altında Module.php dosyamı yukarıda anlattığım şekilde oluşturdum,namespace alanımı değiştirmem gerekti omerhamsi\content şeklinde değişiklikle dosyamı oluşturdum.Composer.json dosyamıı sizin paylaştığınız composer.json şeklinde içeriğini doldurdum.Temel şeyleri ekledikten sonra git status komutu ile yapılan değişiklikleri gördüm git add . ile oluşturduğum dosyaları eklemiş oldu.git commit -m "" ile commitimi attım ve git push ile sunucuya gönderdim.Bu şekilde hesabıma değişikliklerim kaydedilmiş oldu.Bunu projeme ekleyebilmek için packagist sitesinde github projemin pacagiste tanıttım.projenin bir kopayısını alarak yaptım.Bana verdiği komutun sonuna bir "dev main"ekleyerek bu komutu kullandığımda projeme eklemiş oldum.Bu modülü tanıtmak için config dosyamda değişiklik yaparak omerhamsi\content\Module değişikliği yaparak tanıtmış oldum.Daha sonra bu proje üzerinde değişiklikler eklemeler yaparak projemi oluşturmaya başladım.İçerisinde ürünler olan bu ürünlere ait yorumları görebileceğim,yorum ekleyeip eklediğim yorumları silebileceğim bir mekanizma oluşturdum.Öncelikle bir ürünler tablosu ve bu tabloyla ilişkili olacak yorumlar tablosu oluşturmak için projem altına bir migration klasörü açtım.migration create komutu ile migrationlarımı oluşturup tabloma ait verileri girdim.consol altında oluşan bu migrationları kesip kendi modülüm altındaki migration kalsörüme yapıştırdım.php yii migrate --migrationPath=vendor/omerhamsi/yii2content/src/migrations diyerek tablolarımı oluşturmuş oldum.İki tablom arasındaki ilişkiyi phpmyadminde urunler tablosundaki id kolonunu ile yorumlar tablosundaki yorumid arasında ilişkiyi kurdum.Daha sonra gii mekanizmasını kullanarak model klasörüm altına modellerimi oluşturdum.Bu iki tablo arasındaki ilişkiyi tanımlamak için Urunler.php dosyam altında bu ilişkiyi tanımlamak için getYorumlar isimli bir fonksiyon oluşturup id kolonu ile yorumid kolonu arasındaki bağlantıyı kurdum.Böylelikle herhangi bir ürüne ait birden fazla yorumu o idye eşit olan yorumid satırlarını çekerek göstermiş olacaktım.Daha sonra urunler modelini kullanan gii aracı kullanarak bir grud mekanizması oluşturdum amacım bu mekanizma üzerinde değişiklikler yapıp kendi controllerarımı viewlerimi yazmaktı.Oluşan mekanizmada create ile yeni bir ürün oluşturabiliriz.Ürünü oluşturuken fiyat ve isim kolonlarını modelim içerisinde required yaptığım için veri girişi olmadan kayıt işlemini gerçekleştiremiyek. Ayrıca modülü indirdiğinizde direk urun eklemesi için data adlı bir migration oluşturdum.İndex.php dosyamda değişiklikler yaparak urunlerimin birer liste halinde gözükmesi için listview widgetını kullandım bu widget diğer bir view olan list.php dosyasını çağırıyor asıl işlemleri burada gerçekleştirdim. list viewi içerisinde helpersları kullandım.Başlığı gösteren ve her list elemanı için yorumları ve ürün detayını göreceği ve ürünü silebileceği birer buton ekledim.Ürünü sil butonu delete2 controllerına yönlendirme yapıp o ürünün idsini gönderiyor.Bu controller ise o idli ürünü buluyor daha sonra ürünün getYorumlars fonksiyonunu çağırıp o ürünle ilişkili bütün yorumları yorumlar tablosundan silip daha sonrada ürünü ürünler tablasundan silme işlemini yapıp index viewine yönlendirme yapıyor.Ürün yorumları butonu ise comment adlı actiona o ürünün id sini gönderiyor.comment controllerı o idli ürünü bulup comment viewine gönderiyor.Bu view içinde bir detailview kullanarak ürüne ait detay bilgiyi gösteren bir widget kullandım.comment viewi içinde o ürüne ait $model üzerinden getYorumlar fonksyinuan bağlanarak yorumlar tablasundan idsiyle eşit olan yorumidleri çekip bir foreach döngüsü içinde yorummları gösterdim ancak bunları echo ile gösterebilfim bir tabloda gösterebilmek için çok uğraştım ancak başaramadım.Siz depoyu migrationları kurduğunuzda başlangıçta ürünleri ekleyen bir migration oluşturdum ancak foreign key hatasından başlangıçta görebileceğiniz yorumlar ekleyemedim herhangi bir ürüne girip o ürüne dilediğiniz kadar yorum ekleyebilirsiniz bu şekilde ürünler ekranına geri gelip tekrar ürün yorumlarını göre tıklayarak o ürünle alakalı yorumları listeleyecektir.Bir helpers kullanarak yorum ekle butonu oluşturup ekleme actionına o ürünün idsini yoladım ekleme actionı yorumlar sınıfında bir new oluşturup yeni oluşturacağım yorumun idsini gönderdiğim id olarak ekledim daha sonra new comment adlı bir viewe modelimi gönderdim.newcommonet içerisinde form öğeleri kullandım bir yorum girmesini istedim bu yorum required olduğundan girilmesi gerekli daha sonra bir helper aracılığla submit kullandım.Tekrar actiona geldiğinde girilen verileri load metodu ile yükleyip save metodu ile tabloya eklemiş oldu.Bu şekilde o ürüne ait bir yorum ekleyebildik.Ya da eklediğiniz yorumun yanında helpers ile bir yorumu sil butonu ile o yorumu silebilirsiniz.Bu işlem sil actinına o yorumun idsini ve modelin idsini gödnderiyor.Her bir yorumun primary özelliği olan id sini bulup o yorumu silebiliyoruz.Bu action tekrar comment viewine yönlendiriyor.Bu şekilde istediğiniz bir yorumu silme ekleme ya da herhangi bir ürüne ait yorumları ilişkili tablolar yardımıyla görebiliyoruz.