Funguje {snippet} v sablonach?

- maxim
 - Člen | 12
 
Dobry den, setkal sem se s problemom, ktery ma zarazil.
Pri vytvarani sablon som umiestnil snippet do sablony top.latte, no v layate
@layout.latte mam incloudnutu tuto sablony.
Ted nastal problem, ze ajax nefunguje pod top.latte ale iba v
@layout.latte.
(Mam nacitani stranky cez ajax a v top.latte je menu.)
Samozrejme obnovujem cez basepresenter:
<?php
  protected function beforeRender()
  	{
  		if ($this->isAjax()) {
        $this->invalidateControl('content');
        $this->invalidateControl('title');
        $this->invalidateControl('menu');
      }
  	}
?>
V sablone som umiestnil kod na testovanie:
<ul class="nav navbar-nav">
    <li{ifCurrent Page:login} class="active"{/ifCurrent}><a class="ajax link" n:href="Page:login"><span class="glyphicon glyphicon-log-in"></span> Log in</a></li>
</ul>
Ak umiestnim snippet do top.latte neinvaliduje ale uz v @layout.latte invaliduje.
No ted ma tohle ani netrapi, ale co ked bude mi treba invalidace v sablonach? Je tohle bug, alebo som ja na neco zapomenul?
Za kazdou radu diki.
Verze: nette framework 2.1.0
Editoval maxim (23. 1. 2014 18:07)

- David Matějka
 - Moderator | 6445
 
invalidace snippetu v inkludovanyh sablonach implicitne nefunguje, ale myslim, ze by to mel resit tenhle commit a tedy makro snippetArea, kterym obalis misto, kde inkludujes tu sablonu
{snippetArea top}
{include "top.latte"}
{/snippetArea}
(a invaliduj i ten snippet top)

- maxim
 - Člen | 12
 
matej21 napsal(a):
invalidace snippetu v inkludovanyh sablonach implicitne nefunguje, ale myslim, ze by to mel resit tenhle commit a tedy makro snippetArea, kterym obalis misto, kde inkludujes tu sablonu
{snippetArea top} {include "top.latte"} {/snippetArea}(a invaliduj i ten snippet top)
Dekuji za radu. Inavalidace {snippet}includnuty soubor{/snippet} funguje
v layoutu bezchybne. No v samotnych sablonach mi nefunguje invalidace, to je
problem. Hlavne v sablonach bude vela invalidace. Nezda sa mi vsak ze taky
velky framework na toto nemysli.
Zrejme iba moja chyba nekde.
Potrebuju vela invalidace prave v includnutych sablonach a includovat stale je
blbost.

- maxim
 - Člen | 12
 
honos napsal(a):
zivotni ciklus presenteru invalidujes snipety jeste pred zmenou dat v sablone?
invalidujem v before render. No zmena dat jiz zmenena. Cize postupnost je zachovana.

- David Matějka
 - Moderator | 6445
 
a zkousel jsi to snippetArea? to by to prave melo resit, je to jakoby oblast, kde jsou snippety – invalidujes jak tu snippetAreu (top), tak vsechny snippety v inkludovane sablone, ajaxove se vsak poslou jen ty samotne snippety a ne cela snippet area
bez snippet area fungujou snippety jen v @layout a v hlavni sablone presenteru. ale pokud chces invalidovat ruzne menu apod, vytvor si na to radeji komponentu.

- Jan Tvrdík
 - Nette guru | 2595
 
Docetl jsem se, ze redraw control a invalidate control su dve rozdielne veci.
Můžeš mi napsat, kde jsi to našel?

- maxim
 - Člen | 12
 
rixi napsal(a):
Daj vediet ci ti funguje makro snippetArea, ja som to skusal po vzoru, ktory je napisany v testoch (ina ukazka v docu ani vo foru nie je) a bezuspesne. Obsah v makru snippetArea sa mi nechcel vobec zobrazit.
Nevim proc, ale {snippetArea menu} nefunguje, teda pri invalidaci jak
u snippetu.
Nevim, mozna neco robim zle…

- maxim
 - Člen | 12
 
Jan Tvrdík napsal(a):
Docetl jsem se, ze redraw control a invalidate control su dve rozdielne veci.
Můžeš mi napsat, kde jsi to našel?
https://doc.nette.org/…ication/ajax
Skousel jsem priklad fifteen, no vyhodi mi not found.
Nicmene, mrkal som:
Invalidace, druhy priklad.
No zrejme teda muj omyl, neni tam uvedeno invalidatecontrol. Diki za radu.

- David Matějka
 - Moderator | 6445
 
snippetArea opravdu nefunguje spravne, poslal jsem pull request, ktery by to mel resit https://github.com/…te/pull/1377

- maxim
 - Člen | 12
 
matej21 napsal(a):
snippetArea opravdu nefunguje spravne, poslal jsem pull request, ktery by to mel resit https://github.com/…te/pull/1377
No musim dodat, ze u mna:
{snippet menu}
{inlude menu.latte}
{/snippet}
Funguje ok
{snippetArea menu}
{inlude menu.latte}
{/snippetArea}
Nefunguje a ani ma to netrapi, ked funguje to predtym.
{inlude menu.latte}
v menu.latte
{snippet menu}
content
{/snippet}
Nefunguje, nevim proc.
{inlude menu.latte}
v menu.latte
{snippetArea menu}
content
{/snippetArea}
Nefunguje a urcite by melo.

- Šaman
 - Člen | 2668
 
maxim napsal(a):
Jan Tvrdík napsal(a):
Docetl jsem se, ze redraw control a invalidate control su dve rozdielne veci.
Můžeš mi napsat, kde jsi to našel?
https://doc.nette.org/…ication/ajax
Skousel jsem priklad fifteen, no vyhodi mi not found.
Nicmene, mrkal som:
Invalidace, druhy priklad.
No zrejme teda muj omyl, neni tam uvedeno invalidatecontrol. Diki za radu.
invalidateControl() se ta metoda jmenovala dřív, v posledním
Nette už je to redrawControl()