Funguje {snippet} v sablonach?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
maxim
Člen | 12
+
0
-

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>&nbsp;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)

honos
Člen | 109
+
0
-

zivotni ciklus presenteru invalidujes snipety jeste pred zmenou dat v sablone?

David Matějka
Moderator | 6445
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

rixi
Člen | 109
+
0
-

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.

mcJanek
Člen | 1
+
0
-

Nette 2.1.0 používá $this->redrawControl() místo $this->invalidateControl()

Jan Tvrdík
Nette guru | 2595
+
0
-

@mcJanek: nicméně to na nic nemá vliv

maxim
Člen | 12
+
0
-

mcJanek napsal(a):

Nette 2.1.0 používá $this->redrawControl() místo $this->invalidateControl()

Ak je toto platne tak je zrejme zle napsan manual.
Docetl jsem se, ze redraw control a invalidate control su dve rozdielne veci.
Ale muzu byt i ja omylny, jeste si to mrknu.

Jan Tvrdík
Nette guru | 2595
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

snippetArea opravdu nefunguje spravne, poslal jsem pull request, ktery by to mel resit https://github.com/…te/pull/1377

maxim
Člen | 12
+
0
-

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.

sKopheK
Člen | 207
+
0
-
{snippetArea ...}

mi funguje, díky!

Šaman
Člen | 2668
+
0
-

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

kralik
Člen | 230
+
0
-

Ahoj,
prosím funguje vám zde zmiňovaný {snippetArea xXx}?

Marně se pokouším ho zprovoznit.

Předem díky

Editoval kralik (6. 11. 2014 11:19)