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()