komponenty v includované šabloně a jejich vytvoření, které nechci :)
- sevca79
- Člen | 55
Ahoj,
mám následující problémek
mám nějaké komponenty, které pomocí @inject vkládám do
presenteru.
Když mám v šabloně něco jako
<a n:href="updatuj!" class="ajax">Updatuj</a>
{snippet sn1}
{control myControl1}
{/snippet}
{snippet sn2}
{control myControl2}
{/snippet}
{snippet sn3}
{control myControl3}
{/snippet}
a v presenteru třeba
public function handleUpdatuj() {
if ($this->isAjax()) {
$this->redrawControl("sn1");
}
}
tak vše asi proběhne tak jak má a po kliknutí na odkaz se provede pouze createComponentyMyControl1() a ostatní createComponent… neproběhnou..
avšak pokud mám komponenty v includované šabloně
<a n:href="updatuj!" class="ajax">Updatuj</a>
{snippetArea snA}
{include controls.latte}
{/snippetArea}
includovaná šablona vypadá nějak takto
{snippet sn1}
{control myControl1}
{/snippet}
{snippet sn2}
{control myControl2}
{/snippet}
{snippet sn3}
{control myControl3}
{/snippet}
samozřejmě v presenteru handle upravím
public function handleUpdatuj() {
if ($this->isAjax()) {
$this->redrawControl("snA");
$this->redrawControl("sn1");
}
}
tak v tuto chvíli proběhnou i funkce createComponentMyControl2 a createComponentMyControl3..což nechci, pač v těchto funkcích mám spoustu databázových dotazů, které nejsou nutné, aby se vykonávali, když chci updatovat prakticky jen první komponentu…
asi to bude nějaká maličkost, sem začátečník a možná nepoužívám nejlepší best practice pro tvorbu komponent, ale rád se nechám poučit jak správně to vše tvořit..hlavně bych rád se zbavil těch databázových dotazů v createComponentMyControl23, které nechci vykonávat, když upravuji pouze MyControl1..a taktéž chci zachovat ty includy, pač celé je to trošku složitější :)
dík za jakoukoli radu
–sevča
Editoval sevca79 (16. 10. 2017 14:14)
- David Matějka
- Moderator | 6445
ahoj, obávám se, že jde o known limitation.
ve chvíli, kdy se zavolá invalidovaný snippet (nebo i snippetArea), tak se volá vše v něm, bez ohledu, jestli to také bylo invalidované. asi by to chování šlo změnit, ale mohl by to být BC break.
nebylo by lepší v tvém případě přesunout ty snippety do té komponenty a invalidovat je tam?