Jak překreslit právě jednu komponentu?

DefenestrationPraha
Člen | 110
+
0
-

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á.

stepos2
Člen | 51
+
0
-

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í.

DefenestrationPraha
Člen | 110
+
0
-

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.

stepos2
Člen | 51
+
0
-

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.

DefenestrationPraha
Člen | 110
+
0
-

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á.

stepos2
Člen | 51
+
0
-

Některý věci možná ozřejmí tohle video

Editoval stepos2 (2. 6. 2023 17:07)

DefenestrationPraha
Člen | 110
+
0
-

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í.