Podstawy : Widoki

Witam, mam problem z obadaniem działania widoków w Yii :confused:

Otóż mam layout w który tworzy ogólny szkielet strony. Z tego co do tej pory zrozumiałem - cały wyrenderowany kod html z widoków trzymany jest w zmiennej $content - jak na razie ok - wszystko rozumiem.

Chciałbym rozbić kod na :

  • _content

  • _header

  • _footer

czyli tak w sumie standardowo.

W kohanie czy też w symfony, utworzyłbym sobie w kontrolerze zmienną prywatną np.


        $this->template->set('slider',View::factory('__jakiś_podwidok'));

albo


     {% render 'CosTamBundle:Kontroler:Akcja' %} lub 

    % include 'Bundle:Kontroler:widok.twig' %} 

do niej zrenderował widok, a samą zmienną wysłał bym do głównego widoku.

Tutaj gdy zrobię : $zmienna = $this->renderPartial(’//katalog/widok’); to raz działa, raz wywala błąd include(HTML.php) o_O

Dlaczego to taka konstrukcja raz działa raz nie.

Btw. może to takie tylko moje odczucie, ale jakoś Yii jest dla mnie trudniejsze niż symfony :confused: Jakieś takie zamotane - nic nie jest dla mnie przejrzyste :confused:

Btw2. dlaczego mogę napisać tylko 3 posty dziennie ? Wczoraj nie mogłem nawet zedytować tego posta.

Cześć,

Genralnie nie ma tu niczego skomplikowanego, tu masz link do omówienia całego tematu http://www.yiiframework.com/wiki/249/understanding-the-view-rendering-flow/ przerabiałem kilka frameworków i ostatecznie zostałem z yii bo właśnie dla mnie jest najmniej skomplikowane.

To dlaczego raz działa a raz nie, no trudno na takie pytanie odpowiedzieć włącz sobie trub debugowania, logowanie i oglądaj co tam rzuca za błędy.

Jak to mówią, najtrudniejszy pierwszy krok…

Powodzenia

Hm… w index.php :


defined('YII_DEBUG') or define('YII_DEBUG',true);

Katalog : views / layouts / partnerlay.php

Zawartość :


<html>

<body><?php echo $content;?></body></html>

W kontrolerze SiteController - ten który jest po utworzeniu projektu :


<?php


class SiteController extends Controller

{

    public $layout='//layouts/partnerlay'; // change your code here

baa… nawet w akcji index jak dam :


 $this->layout = '//layouts/partnerlay';

  • powinno zmienić lay dla danej akcji - nic się nie dzieje, nadal widać to co jest w podstawowym layoucie main.php.

Już sam nie wiem gdzie leży błąd :confused: Jak na razie jeszcze się staram, ale strasznie mnie już zniechęca ten FW :confused:

Nie działa, bo należy ustawić parametr $return na true. Domyślnie render partial wypluwa dane na ekran.


$zmienna = $this->renderPartial('//katalog/widok', null, true);

Pokaż zawartość view/layouts/partnerlay.php, bo coś mi się wydaje, że dziedziczysz w nim po main.php.

Może za bardzo chcesz tutaj wszystko robić jak w Symfony? ;)

Dzięki za odpowiedź, ale musiałem wrócić do symfony :) tak czy siak jeszcze w przyszłości na pewno postaram się ugryźć ten FW.