Latte podmienka zapisana v premennej

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

Zdravim, mam premennu s hodnotou napr.

$cond = '$item->done == "yes"'

a potreboval by som obsah tejto premennej pretransformovat na podmienku v latte, ktora by vyzerala takto

	{if $item->done == "yes"}

je to mozne? Prepisanim makra if to asi pojde, ale ide to aj bez toho?

Editoval Gaprielko (12. 6. 2013 8:31)

enumag
Člen | 2118
+
0
-

To je krajně nevhodné. $cond by rozhodně neměl být string s kódem, když už tak string s názvem funkce nebo rovnou callback:

$cond = function ($item) {
	return $item->done == "yes";
};
{if $cond($item)}
Gaprielko
Člen | 42
+
0
-

Rozumiem tomu, ze je to nevhodne.. no retazec v $cond je programatorskym vstupom.. robim generovane menu s tym, ze jednotlive polozky generujem na zaklade dat v .neon, napr.

items:
    done:
        icon: ok
        text: Done
        nhref: done
        params: [taskId: 'item->id']
        cond: '!item->done'
    undone:
        icon: ban-circle
        text: Undone
        nhref: undone
        params: [taskId: 'item->id']
        cond: 'item->done'

vyssie uvedene mi vygeneruje menu s 2 polozkami, pricom v cond potrebujem zriesit podmienku, ktora hovori o tom, kedy sa ma dana polozka v menu vykreslit.. tu nemozem pouzit ziaden callback ak chcem, aby tento vstup z .neon bol jedinym vstupom pre generovanie menu.. ako sa to da poriesit?

Editoval Gaprielko (12. 6. 2013 9:45)

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

Nechtěj tam mít kód, za žádnou cenu. Zkus třeba do toho pole cond uvádět pouze názvy properties, ty už se ti budou kontrolovat v šabloně snadno.

enumag
Člen | 2118
+
0
-

Anebo název metody pokud property nestačí.