spacja
(Spacjaforads)
July 14, 2013, 4:08pm
1
Witam, mam problem z obadaniem działania widoków w Yii
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 :
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 Jakieś takie zamotane - nic nie jest dla mnie przejrzyste
Btw2. dlaczego mogę napisać tylko 3 posty dziennie ? Wczoraj nie mogłem nawet zedytować tego posta.
viktor
(Grzegorz Wiktorowski)
July 15, 2013, 6:24am
2
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
spacja
(Spacjaforads)
July 16, 2013, 6:09am
3
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 Jak na razie jeszcze się staram, ale strasznie mnie już zniechęca ten FW
luk1999
(Lukaszstuszek)
July 17, 2013, 6:22am
4
spacja:
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
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?
spacja
(Spacjaforads)
July 23, 2013, 10:07am
5
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.