Jak manuálně prohnat kód latté filtrem?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
snakeeater
Člen | 18
+
0
-

Zdravím,
na sve strance mam slozite menu a z urcitych duvodu ho potrebuji generovat pres PHP. Generuji ho v hlavnim presenteru, ze ktereho dedi vsechny ostatni presentery (jelikoz menu je na kazde strance). Vysledny kod jedne polozky menu muze vypadat (osekane) nejak takto:

<?php
<a href="{plink Articles:create}">Vytvorit clanek</a>
?>

Jenomze kdyz tento kod predam pres nejakou promenou view a tuto promennou vypisu jako {$menu}, tak se mi vypise HTML kod jako text, tj. neni na strance preveden na jednotlive elementy stranky. Kdyz promennou vypisu jako <?php echo $menu ?>, tak makra uvnitr promenne nejsou zpracovana latté filtrem.

Zajimalo by me tedy, jak mohu tento kód manuálně latté filtrem prohnat, protože jinak mi odkaz směřuje na {plink Articles:create} a tak se samozřejmě nikam nedostanu.

Jakekoli alternativni reseni take uvitam

Dekuji za pomoc

PS: Zkousel jsem ten kod generovat primo v hlavni sablone a ani to nijak nepomohlo. Routovani a zpracovavani maker je ale jinak normalne v poradku.

Ondrej
Člen | 110
+
0
-
<?php
	$menu =	'<a href="'.$this->link('Articles:create').'">Vytvorit clanek</a>';
?>
jansfabik
Člen | 193
+
0
-

Opravdu je nutné ten kód generovat v presenteru? Tam to totiž vůbec nepatří.

Můžeš si to menu dát do jiného souboru (třeba @menu.phtml) a potom v souboru zavolat {include @menu.phtml}.

Editoval jansfabik (19. 10. 2010 22:08)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Jednou z možností je použití StringTemplate. Možná by ale lepší možností celkově bylo generovat menu nikoliv pomocí skládání HTML/Latte v Presenteru, ale přímo v šablonách. Dobrým příkladem může být Navigation od Honzy Marka – používám svou upravenou verzi, která se mi generuje podle zadání ve formě pole a pracuje se s tím skvostně.

jtousek
Člen | 951
+
0
-

Vykreslení menu parří do šablon. Pokud si nevystačíš s Latté filterm, v šablonách můžeš klidně použít přímo <?php … ?>. Případ dědičnosti o kterém mluvíš řeší použití šablon jako @layout.phtml. Všechna data, která pro to potřebuješ, by měl vytahat presenter a poslat šabloně. Dále můžeš zvážit vlastní komponentu pro menu nebo třeba nějaká vlastní Latté makra např. pro odkazy.