Jak překreslit právě jednu komponentu?
- DefenestrationPraha
- Člen | 120
Mám takový začátečnický dotaz.
Mám cca 5 vlastních komponent v rámci latte šablony, která je poskládána z různých podšablon, což znamená, že je musím obalit pomocí snippetArea, jinak mi nebude fungovat jejich překreslování.
Přijmu signál ve své komponentě (pomocí handle), překreslím ji, zavolám redrawControl() na snippetAreu a na tu komponentu. Následně bych chtěl, aby se celý životní cyklus prezentéru ukončil a aby se odeslaly jen překreslené snippety a nic víc. Zejména nechci, aby se pokračovalo ve vykreslování šablony default.latte, kde můžou být nějaké výpočetně obtížné záležitosti.
Jak mám toto zajistit? Prostě hned po překreslení komponenty vrátit vyrenderované snippety a nazdar.
Presenter::terminate() to být nemůže, ten žádnou odpověď neodesílá.
- DefenestrationPraha
- Člen | 120
stepos2 napsal(a):
Nevím, jestli je to odpověď kterou hledáš, ale osvědčilo se mi vykašlat se na podšablony a snippetAreu a používat pouze komponenty. Pak všechno funguje podle očekávání.
Hm, na podšablony se v tak komplikovaném projektu nemůžu vykašlat. Mám několik set stránek, které se skládají do toho samého layoutu. Právě dědění šablon mi pomáhá se z toho nezbláznit.
A při dědění šablon je snippetArea nezbytností, jinak tu překreslenou komponentu nedostanu.
- DefenestrationPraha
- Člen | 120
stepos2 napsal(a):
Tak ona komponenta je v podstate alternativni cesta jak vytvorit podsablonu. A jako bonus funguje prekreslovani :-) Ale nemusi to byt vhodne vzdy, asi nejlepsi je vyzkouset si na mensim projektu, jak se to chova.
Hm, teď jsem teprve přišel na to, jak skutečně překreslit v signálu jen komponentu bez snippetArea. Když mám template dané komponenty, musí být celý její kód uzavřený ve značkách
{snippet}
{/snippet}
Je to popsáno na konci této stránky dokumentace, až dosud jsem si toho nevšiml.
Jako bonus se nepřekreslují další komponenty. Ale životní cyklus prezentéru dále probíhá.
- DefenestrationPraha
- Člen | 120
stepos2 napsal(a):
Některý věci možná ozřejmí tohle video
To je zajímavé video. Už celkem dávno se mi podařilo dosáhnout stavu, aby se posílaly jen změněné snippety. O co teď usiluji, je, aby se na serveru provádělo co nejmíň renderování věcí, které se renderovat nemusejí.