odeslání proměnné do layoutu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mordare
Začátečník | 117
+
0
-

Ahoj lidi chtěl bych se zptat jak vytahnout data z modelu a odeslat je do layoutu. skoušel sem přidat tento kód:
$this->template->news = $news;
do BasePresenteru ale vypsalo mi to syntax error, unexpected T_VARIABLE, expecting T_FUNCTION můžete někdo poradit jak to udělat?

maarlin
Člen | 207
+
0
-

Uvedenou syntax error určitě nezpůsobuje zápis $this->template->news = $news;, ten je afaik syntakticky správně, problém bude jinde. Tipuji nějakou zapomenutou závorku, popř. závorku navíc, nebo jiný znak.

Mikulas Dite
Člen | 756
+
0
-

Musíš to dát do nějaké konkrétní metody, ne rovnou do té třídy. Nejlépe do metody renderDefault (případně renderAction = název tvé akce).

mordare
Začátečník | 117
+
0
-

no ale ja potrebuju odesilat tu proměnnou do toho layoutu kdykoliv este takova mala chybka že sem zapoměl napsat cely ten kod

	$model = new DatabaseManager;
	$news = $model->findNews();

	$this->template->news = $news;
sairon
Člen | 32
+
0
-

Když ji chceš ve všech presenterech, pak ten kód umísti do metody beforeRender například u BasePresenteru, od kterého dědí ostatní presentery, které používají ten layout.

mordare
Začátečník | 117
+
0
-

Jak to prosim udělat ja s nette začínám a respektivě když to fám do té metody tak jak to pak počlu do layoutu?

wdolek
Člen | 331
+
0
-

pro vsechny akce base presenteru, a tedy i pro vsechny akce jeho potomku:

class BasePresenter extends Presenter
{
	public function beforeRender()
	{
		$model = new DatabaseManager;
		$news = $model->findNews();

		$this->template->news = $news;
	}
}

v nejake sablone:

{if $news}
	{foreach $news as $article}...{/foreach}
{/if}