Snippet vo vnútri foreach, if, while, …
- timbulko
- Člen | 85
Zdravím,
Potreboval by som vytvoriť určitý počet snippetov (podľa počtu riadkov
v tabuľke) a tieto podľa užívateľovej akcie prekreslovať. Neprišiel som
však zatiaľ na spôsob ako na to, pretože pri použití snippetu
v akomkoľvek cykle alebo podmienke mi to vždy vypíšte parse error. Dokonca
aj pri jednoduchom použití:
{if true}
{snippet test}{/snippet}
{/if}
Nevedel by niekto poradiť ako na to?
Vďaka.
- buff
- Člen | 63
Děkuji za otázku i za odpovědi, to se mi zrovna bude hodit. :-)
Řeším ale triviální problém, vždy se mi překreslují všechny snippety. Poradíte mi prosím, kde dělám chybu?
Šablona My.default.phtml
:
{snippet raz}raz{/snippet}
{snippet dva}dva{/snippet}
<a class="ajax" href="{link change!}">změň</a>
Presenter MyPresenter.php
:
<?php
class MyPresenter extends Presenter
{
public function handleChange() {
$this->invalidateControl('dva');
}
}
?>
Přenesená data:
{"state":[],"snippets":{"__raz":"raz","__dva":"dva"}}
Chtěl bych:
{"state":[],"snippets":{"__dva":"dva"}}
- jasir
- Člen | 746
Zkus:
<?php
class MyPresenter extends Presenter
{
public function handleChange() {
$this-validateControl();
$this->invalidateControl('dva');
}
}
?>
Mohlo by to fungovat.
Když je komponenta cílem signálu, invaliduje se (a tím i její
snippety). Už tu na fóru zazněly návrhy aby se tak nedělo, ale zatím to
myslím nebylo implementováno. Jinak možná má ještě smysl to asi obalit do
nějaké
podmínky if(Environment::getHttpRequest()->isAjax()) {...invalidate...}
- David Grudl
- Nette Core | 8228
V novém režimu chování ($oldLayoutMode = FALSE
) se
automaticky už neinvaliduje.