Yii ile ilgili genel hatları ile incelememi bir önceki makalelerimde yazmıştım dilerseniz aşağıdaki linkden ulaşabilirsiniz:
Şimdi ise yii ile gii kullanımına kısaca değinip ilk basit hello world uygulamamızı yapacağız.
Gii nedir önce ondan kısaca bahsetmek gerekirse, gii bizim için code generator yani kod oluşturucu diyebiliriz. Gii nin içinde barındırdıkları:
- Controller Generator
- Crud Generator
- Form Generator
- Model Generator
- Module Generator
Şimdi gii yi projemizde aktif edelim. Bunun için projemizin altında ki protected/config/main.php dosyasını açarak aşağıdaki satırlarda bulunan yorumları silerek kodu aktif edelim ve kod oluşturucuya girebilmek için bir parola belirleyin.
'modules'=>array( // uncomment the following to enable the Gii tool 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'onur', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','::1'), ), ),
Daha sonra adres satırınızı ?r=gii/default/login parametreleri ile çağırarak gii ye erişebilirsiniz yani benim son url adresim: http://localhost:8888/yii_demo/index.php?r=gii/default/index (Url kurulum ayarlarına göre değişebilir)
Bu işlem sonucunda yukardaki ekran sizi karşılayacaktır.
Burada controller generator ile başlayalım işlemimize. Karşımıza aşağıdaki ekran gelecek
Şimdi buradaki alanları tanıyalım kısaca:
Controller ID: Controller dosyanızın ismini buraya giriniz. Ben buraya merhaba olarak gireceğim. Bu girilen isme göre adres şekillenir yani merhaba dosyasına index.php?r=merhaba diyerek ulaşabiliriz.
Action IDs: Buraya controller dosyası içerisinde olmasını istediğiniz fonksiyonları virgülle ayırarak yazın. Örnekte index ve deneme fonksiyonlarını yazıyoruz.
index.php?r=hello/index ve index.php?r=hello/deneme şeklinde bu fonksiyonlara erişebileceğiz.
Bir sonraki adımda Preview butonuna basıyoruzve oluşturulacak dosyaların listesini göreceğiz. Eğer herşey düzgün ise Generate butonuna basarak sayfalarınızı oluşturabilirsiniz.
Not: Preview butonuna tıkladığınızda karşınıza çıkan dosyalar için, ilgili klasörlere yazma izni vermeyi unutmayın.
Görüntümüz şu şekilde olacak:
Artık http://localhost/proje1/index.php?r=merhaba yazdığınızda aşağıdaki ekran gelecektir. Sayfa içindeki fonksiyonlara erişmek için ise index.php?r=merhaba/deneme yazmanız yeterlidir.
Gördüğünüz gibi sayfanın görüntüsünü düzenlemek için düzenlememiz gereken dosyanın adresini bize veriyor: views/merhaba/deneme.php
r=merhaba/deneme adresimizdeki merhaba kısmı kullandığımız controller ismini, deneme ise bu controller içinde kullandığımız fonksiyonu temsil eder.
İsterseniz protected/controllers/MerhabaController.php dosyasına bir göz atalım;
class MerhabaController extends Controller { public function actionDeneme() { $this->render('deneme'); //view ismi } public function actionIndex() { $this->render('index'); //view ismi }
Gördüğünüz gibi gayet kolay işlemler…
Peki Biz view dosyamızda ekrana basacağımız değerleri controller içinden göndermek istersek ne yapmamız gerekli? Nasıl yapabiliriz isterseniz kısaca bundan da söz edelim..
Az önce yukarda view ları render ettiğimiz public metodlarda ufak bir değişiklik yapacağız şimdi. Diyelim ki Deneme fonksiyonuna değer yollattıralım, son hali actionDeneme metodumuzun şu şekilde olacak:
public function actionDeneme() { $developer = 'Onur Canalp'; $degiskenler['developer'] = $developer; $this->render('deneme', $degiskenler); }
View Dosyamızda direk $developer şeklinde çağırabileceğiz artık değeri.
Şimdi dilerseniz view dosyamızı (protected/views/merhaba/deneme.php) düzenleyelim:
<?php /* @var $this MerhabaController */ $this->breadcrumbs=array( 'Merhaba'=>array('/merhaba'), 'Deneme', ); ?> <h1><?php echo $this->id . '/' . $this->action->id; ?></h1> <p> Gelen developer değişkenimizin değeri: <?php echo $developer; ?> </p>
ve yukardaki işlemin sonucu:
Gördüğünüz gibi controller dan başarılı bir şekilde değeri aldık ekrana bastık..
Umarım açıklayıcı olabilmişimdir, en yakın zamanda diğer generator lar ile karşınızda olmayı ümit ediyorum. İyi çalışmalar herkese..