Jednotný přístup k parametrům v latte

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

Ahoj,
má latte něco jako twig, kdy se chová stejně k objektu i k poli? Jde mě o to, že bych nechtěl na úrovni syntaxe řešit, jestli mám v proměnné pole nebo objekt. V twigu to je přes tečkovou notaci, takže nějak takhle:

{$article->getTitle()}
// ekvivalent
{$article.title}

{$article['title']}
// ekvivalent
{$article.title}

Je tohle nějak možný? Nějakej plugin? Nějakej nápad jak to implementovat?

Oli
Člen | 1215
+
0
-

Proč negativní palec? Co je na mém dotazu špatně? Ptám se jen ze zvědavosti :)

David Matějka
Moderator | 6445
+
0
-

n, nic takoveho latte nema. ale byly tu pred nejakou dobou ohledne toho ruzne diskuze. Problem je, ze to ma celkem podstatny dopad na performance behem runtime. (A krom toho, tecka by byla problematicka, jelikoz by se to blbe rozpoznavalo od concat operatoru)

nejakym extension by se to snadno rozsirit asi nenechalo. tahle transformace by se nejlepe provadela v phpwriteru, ktery neni snadno rozsiritelny. Ale udelat, aby byl rozsiritelny pro ruzne custom preprocessory by nemuselo byt slozite.

Oli
Člen | 1215
+
0
-

Díky za odpověď. Ona by to nemusela být tečka, je to celkem jedno. Spíš jde o to, aby ten přístup byl stejný.

Ale udelat, aby byl rozsiritelny pro ruzne custom preprocessory by nemuselo byt slozite.

Tohle, jestli to chápu dobře je na zásah přímo do latte, že? Navic by se to udělalo jen jednou a uložilo do cache?

Napadlo mě, že takový workaround by mohl být, pokud bych všechny pole převáděl na ArrayHash. Ale nevím, jestli tam pak nebude nějaký znatelný zpomalení programu (a nepřijde mě to zrovna systémový)… Pak bych se ke všemu dostal přes ->.

David Matějka
Moderator | 6445
+
0
-

Tohle, jestli to chápu dobře je na zásah přímo do latte, že?

ano

Navic by se to udělalo jen jednou a uložilo do cache?

n, v compile time nevis, jaka data ti prijdou do sablony, takze je potreba to resit vzdy v runtime

Oli
Člen | 1215
+
0
-

Kdy je compile time? Až po render metodě? Pokud jo, tak by jsi teoreticky mohl vědět, co ti přijde, nebo ne?
Nevíš jak tohle řeší twig a proč to tam jde? Je tam taky zpomalení?

Jak tohle třeba řešíš? Nikdy neposíláš do šablony entity, vždycky jenom pole? Samé otázky… :)

David Kudera
Člen | 455
+
+4
-

Runtime je jednoduše každý request na tu danou stránku, compile time je když se ti kompiluje latte do php (generuje se cache).

Ty data se ale můžou request od request měnit, takže se musíš rozhodovat pokaždé znovu, jaký přístup použít (v runtime).

Oli
Člen | 1215
+
0
-

jasně, to je pravda. díky