Przekazywanie danych do layout'u

Mam swoja stronę, pisaną strukturalnie. W ramach nauki chciałem przepisac ją na Yii. Poczytałem o lauout i zastosowanie go byłoby dobrym pomysłem, tylko zastanawia mnie przekazywanie specyficzne przekazywanie do layoutu.

<?php echo $this->layout()->content ?>

Stosuje to w miejscu wyświetlania zmiennej treści, totaj nie mam wątpliwości, ale… oprócz tego jednego miejsca, w calym szkielecie strony jest jeszcze kilka drobniejszych miejsc, w ktrych też chciałbym wyświetlać dane. Żeby to zobrazować wyobraźcie sobie takiego facebooka. Pomijamy czaty i te inne aktywności, ale u góry są różne ikonki np. z ilośćią nieodebranych wiadomości. Normalnie to jest ukryte (np. display: none) ale po kliknięciu na taką kopertę wyświetla się lista konwersacji. W mojej stronie zastosowanie tego jest inne, ale zasada działania podobna.

Jak do layoutu przekazać nie tylko $content ale także inne dane? Myślałem o zmiennych sesji ale narobię tym tylko bałaganu, może jest szlachetniejsza metoda do której się nie dokopałem :slight_smile:

Szczerze, to nie wiem co kombinujesz. Jeżeli chcesz w layoucie - moim sposobem - zrobić, że coś jest czegoś nie ma na podstawie jakiejś zmiennej. To nie możesz w trakcie renderowania przekazać zmiennej ?

public function actionTest(){

return $this->render(‘widok’,[

‘zmienna1’ => $jakasZmienna,

‘zmienna2’ => ‘asdasdasdasd’,

‘zmiennaN’ => $this,

]);

}

To może jeszcze inaczej. Mamy layout:


<head>

</head>

<body>

	<div powiadomienia>

		<?php echo $dane['pole_1']; ?>

		<?php echo $dane['pole_2']; ?>

		<?php echo $dane['pole_3']; ?>

	</div>

	<div tresc>

		<?php echo $content; ?>

	</div>

</body>

Jam mogę przekazać do layoutu tablice $dane?

Wydaje mi się, że to powinno Ciebie zainteresować:

http://www.yiiframework.com/doc-2.0/guide-structure-views.html#using-blocks

Przed chwilą to przetestowałem i faktycznie jest szansa na przekazanie zmiennej z kontrolera za pośrednictwem widoku wprost do layout’u. Sry za brak rozpisywania się, jednak tam jest masa kodu przykładowego :)

Ale wykorzystujsz to także w Yii 1.1?

Jeżeli jesteś świeżym w Yii to zacznij swoją przygodę od Yii2 przy Yii1 nic Tobie nie pomogę bo nie ogarniam, jednak sądzę, że podobna droga.

PS.

Może to coś pomoże

http://www.yiiframework.com/forum/index.php/topic/27091-new-view-and-layout-system/

PS2. Mnie bardzo bolało jak dotarło, że lepiej przepisać rozpoczęty projekt do Yii2, jednak teraz już jest całkiem OK