kodu bulunduğu controller(ör:Deneme) ve method içinde /projeniz/protected/views/deneme/view.php dosyanıza $data değişkeninizi gönderir ve render eder.
örnek controller class ımız:
<?php
class UserController extends Controller {
public function actionKullaniciListesi(){
//tüm kullanıcıları database den çekip $model değişkenimize atadık
$model = User::model()->findAll();
//$model değişkenimizi index dosyamıza userlist olarak gönderdik
// /projeniz/protected/views/user/index.php dosyanızda var_dump($userlist) ile detaylı inceleyebilirsiniz
$this->render('index',array('userlist'=>$model);
}
..
burada diğer methodların(sizin deyiminizle actionların) olduğunu varsayalım
..
}
?>
örnek /projeniz/protected/views/user/index.php dosyamızın içerisi
<?php
// controllerda findAll ile tümünü çektiğimizden dolayı foreach(){} ile ekrana yazdırabilirsiniz
foreach($userlist as $user){
echo $user->name;
echo $user->surname;
}
?>
Çok güzel anlatmışsınız.Bu soru anca bu kadar anlaşılır anlatılır.MVC yapısını iyi bilmeyen biri olarak ;
önce model ile veritabanına erişip tüm bilgileri alınıyor sonra controller a gönderiliyor daha sonra gerekli işlemleri yapıldıktan sonra view klasörün içindeki dosyalara render ediliyor.Bu sonuçta layout içinde ki main.php nin içinde ki $content değişkenine aktarılıyor.Anladığım senaryo bu var mı bir hata acaba?
Maalesef ingilizceyi detaylı anlıyamıyorum.Onun için sora sora ve göre göre anlamaya çalışıyorum.Bir haftadır sürekli yii ye bakıyorum ve mantığı az da olsa kaptım.Sürekli takıldığım yerleri sorarak hem kendim için hem diğer arkadaşlara yardımcı olmaya çalıyorum.
Sadece viewin kendisini mi yüklüyor yani. Eğer öyleyse şunu diyebilir miyiz? layoutla işimiz yoksa renderPartial kullandığımızda performans sağlamış oluruz doğru mudur?
Cemal bey,
Siralama tam o sekilde degil. Yii gelen URL’i cozumlediginde URL icinde controller’i buluyor. Yani once controller calisiyor. URL icinde controller’in hangi metodunun cagirilacagi da mevcut. Yahya beyin action olarak belirttigi. Controller ve onun metodu icinde siz model’leri kullanarak dataya ulasiyorsunuz. Sonra render ile MVC’deki V’ye yani gorsele ulasiyorsunuz.
Sira MVC’de aslinda daha cok CMVC gibi. En sonda V’de olusan HTML’i yine controller gonderiyor geriye.