Vlastní macro – složitější escapování

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

Zdravím,

chtěl bych poprosit o to jak správně escapovat, jelikož se mít o stále nedaří udělat korektně. Zaregistroval jsem si nové makro a na $start callbackem volam funkci, kde si to chci naformátovat.

// Takto si chci zavolat macro
{sortBy 'description', $sortBy}
// Toto má být výsledek
<a n:href="this sortBy => 'description'" class="sort asc" n:class="$sortBy == 'description' ? active">ASC</a>

Když to formátuji ve $writer->write(...), tak se mi to nedaří správně udělat.

Pokud by byl někdo ochotný mi zaslat formát jak to vložit do $writer->write(), budu mu vděčný.

Děkuji :)

enumag
Člen | 2118
+
0
-

Použij raději makro define nebo block než vlastní makro.

Editoval enumag (21. 6. 2014 7:46)

martin20a
Člen | 8
+
0
-

V tom nevidím žádnou logiku, to už tam raději mohu nechat ten kód klasicky. Jde mi o to abych nemusel pořád kopírovat celý kód (je tam toho html ještě trochu více než co jsem uvedl) – a myslím, že vidíš, že tam mám proměnné parametry :-)

Jan Tvrdík
Nette guru | 2595
+
0
-

Bloky umí pracovat s parametry.

{define #sortBy}
	<a n:href="this, sortBy => $description" n:class="sort, asc, $sortBy == $description ? active">ASC</a>
{/define}

{include #sortBy, description => '...', sortBy => $sortBy}
jasir
Člen | 746
+
0
-

Bloky si můžeš vyseparovat pro znovupoužitelnost do samostatného souboru (řekněme blockmacros.latte) a pak je použít tam, kde je potřebuješ pomocí makra {includeBlock 'path/to/blockmacros.latte'}