Odkaz na metodu presenteru v default layoutu
- krust
- Člen | 14
Zdravím, používám default layout na vykreslování menu + nějaké
skripty (datatables, atd). Nově jsem přidal funkci
$("#detailHeader").append('<a href={link form $presenter->getParameter("id")}>Upravit</a>');
která v detail layoutu (který mají jen některé presentery) vykreslí
v hlavičce tlačítko upravit. Např. v detailu auta
(„app.cz/auta/detail/1“) to vytvoří odkaz na („app.cz/auta/form/1“).
Jenže tento javascript se „vykoná“, respektive jej nette interpretuje
i když element #detailHeader neexistuje a nette pak řve, že presenter třeba
Úvod nemá metodu „form“. Jak toto vyřešit, případně nějaké
elegantnější řešení? Mám vždy přehled záznamů, jejich detaily a poté
formuláře (kde se dají tvořit nové/editovat existující). Děkuji
Editoval krust (18. 10. 2020 21:02)
- dakur
- Člen | 493
@krust Pozor, Nette javascript vůbec neinterpretuje. Nette se chroustá na serveru, kdežto JS až v prohlížeči u klienta, takže Nette nemá vůbec páru jestli nějaký prvek ve stránce existuje nebo ne. To, co popisuješ, je spíš souběh okolností.
Problém na straně PHP je v tom, že zkrátka a jednoduše existují
určité presentery, které nemají definovanou akci form (tj.
actionForm()
metoda). Otázka je, proč ten odkaz potřebuješ mít
v layout, proč ho negeneruješ jen na těch stránkách s detaily?
Editoval dakur (19. 10. 2020 8:54)
- dakur
- Člen | 493
Příp. pokud to opravdu potřebuješ dělat takto, tak bych si udělal ještě jeden layout, který bude rozšiřovat ten hlavní a budou ho používat jen ty stránky s detaily. Např.:
@layout.latte
{* kód pro všechny presentery *}
{block content /}
...
@layout-detail.latte
{* kód pro presentery s detaily *}
{layout '@layout.latte'}
{block content}
<a href={link form $presenter->getParameter("id")}>Upravit</a>
...
{/block}
Detail.latte
{layout '@layout-detail.latte'}
{block content}
...
{/block}
Uvod.latte
{layout '@layout.latte'}
{block content}
...
{/block}
Editoval dakur (19. 10. 2020 9:00)