Vlastní složítější párové makro

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

Zdravím,
jelikož dokumentace vlastních maker je v Nette nic moc :( tak se potřebují zeptat…
Vytvářím složitější makro, které by v závěru mělo vypadat +/- následovně:

{input $entity,'name','description'...}
	<tr><td><input class="nejaka-trida" id="{$entity->name}-nazev" /></td></tr>
{/input}

Tzn. potřebuji aby:

  1. Vstupem byla jedna pevná proměná a volitelný počet ostatních
  2. Abych dokázal pracovat v metodě, která zpracováva makro s tím co je mezi otvíracím a zavíracím tagem
  3. Abych měl dostupnou proměnou $entity (nebo jakoukoli jinou co si vymyslím) v makro mezi otvíracím a zavíracím tagem

Díky za rady :)

greeny
Člen | 405
+
0
-

párová makra umí (pokud vím) nahradit jen obsah mezi { a } něčím jiným, např. {if $a} za if($a) {. Na takovýhle věci bude asi lepší použít komponentu

Zax
Člen | 370
+
0
-
  1. by určitě mělo jít, viz makro {control}, které přijímá volitelně parametry
  2. by možná mohlo jít ($node->content maybe? Nevím, jen tipuji ;-) )
  3. tohle asi ne… Latte je přeci jen v podstatě „převaděč textu na PHP kód“ když to hodně zjednoduším
jasin755
Člen | 116
+
0
-

$node->content je NULL, resp když si dumpuji všechny property objektu $node, tak jsou NULL nebo FALSE… snad kromě $node->macro.

Jinak snažil jsem se to obejit a udělat to filtrem a opět jsem narazil. Makro {foreach} umi pracovat s helpery? Nebo v čem je problém?

Mám:

{foreach $product->currentProductShop|input:name:alternativeName AS $input}
	Ahoj
{/foreach}

A hodí mi to:

Parse error: syntax error, unexpected ')'

Když se podívám co to přeložilo, tak to z toho vytvořilo tohle:

<?php $iterations = 0; foreach ($product->currentProductShop) { ?>

což je samozřejmě špatně… Ty makra z toho maji vytvořit InputCollection, který implementuje IteratorAgregate

jasin755
Člen | 116
+
0
-

Nefunguje mi dokonce něco jako {$product->purchasePrice*$product|conversionrate} to jsou vážně ty helpery tak hloupé?

Výsledné php je

$template->conversionrate($product->purchasePrice*$product)

samozřejmě $product je objekt, takže to spadně vyjímkou.

Jan Mikeš
Člen | 771
+
+1
-

@jasin755 vsak to vysledne PHP je spravne, co se ti na tom nezda?

Mozna jsi pochopil spatne jak helpery funguji. Aplikuji se na cely vyraz, ne pouze na promennou.

Editoval Lexi (14. 1. 2015 18:46)

jasin755
Člen | 116
+
0
-

No v některých případech je to nežádoucí, vyřešil jsem to zatím tak, že v šablone volám ručne $template->helper($promena)