Render Olayı ?

Merhaba Arkadaşlar

controllerin içinde




$this->render('view',array('data'=>$data);



ifadesi tam olarak okunuşu veya ne anlama geliyor.

Özetle Render olayını çözemedim.Anlaşılır ve basit bir şekilde bilen arkadaşlar anlatırlarsa çok memnun olurum.Çok teşekkürler.

ikinci soru:

Controller içinde birden çok action var bunların hangisi render ediliyor.Senaryo nasıl işliyor

Yii bilen arkadaşlar yardımcı olursanız çok sevinirim.

Merhaba,


$this->render('view',array('data'=>$data);

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;

}

?>



bu işlemin sonucunu browser da görebilmeniz için http://projeniz/user/kullanicilistesi/ yazmanız gerekir.

url i açıklayacak olursak,

/user/ : controller ismimiz

/kullanicilistesi/ : method ismimiz (yani action)

diğer actionların isimlerini deneyerek (parametre alıp almadığını kontrol ederek) farklı sonuçları görebilirsiniz

ör parametreli action tanımımız:


actionUpdate($id){....}

şeklinde ise url de http://user/update/id/123 gibi olmalı.

anlayamadığınız bir yer varsa sorabilirsiniz,

iyi çalışmalar.

Ç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?

Merhaba @cemal bey,

konu aslında Yii Framework ün yaşam döngüsü/iş akışı ndan bahsetmekte ve (LifeCycle) doğru anlamışsınız diyebilirim,

Yii Framework un statik yapısı, uygulamasının iş akışıyla ilgili görseller ve diğer açıklayıcı bilgileri bu http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc sayfada bulabilirsiniz,

iyi çalışmalar.

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.

peki render ile renderPartial aynı vazifeyi mi görüyor? Aynı vazifeyi görüyorsa farkı nedir acaba?

renderpartial de layout yoktur

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?

evet

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.

I do agree with u