Prekreslenie celeho snippetu

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

Caw, potrebujem help, je nejako mozne prekreslit cely snippet aj ked nenastala zmena? Ide o to ze mi snippet ovplyvnuju session a ako si nedetekuje zmenu, tak by som chcel aby sa prekreslil aj ked zmena neni. Ona ta zmena nastane, ale az ked kliknem na dane tlacidlo druhy raz, je to ako keby jeden ajax pozadu… Moze mi prosim niekto poradit?

David Matějka
Moderator | 6445
+
0
-

Snippet se prekresli vzdy, kdyz zavolas redrawControl

ale az ked kliknem na dane tlacidlo druhy raz, je to ako keby jeden ajax pozadu…

tipuju, ze tam nejak spatne zachazis z zivnotim cyklem presenteru. nedelas treba to, ze data vyberes/posles do sablony v action a tu akci, ktera je ma zmenit, provadis az v handle?

Raiper34
Člen | 65
+
0
-

No ja pracujem na vlastnej komponente, v metode draw to posielam do sablony a v handle menim tie data, robim to zle ci co? Na nmiektore veci mi to tak funguje, na niektore nie, co mi pride WTF lebo to robi uplne tak isto…

David Matějka
Moderator | 6445
+
0
-

Prisly ti snippety v odpovedi?

  1. ne – zkontroluj, ze se vola redrawControl
  2. ano, ale stara data – zkontroluj, ze posilas do sablony data az po jejich zmene

anebo ukaz kod, treba to z toho poznam

Raiper34
Člen | 65
+
0
-

No prisli ale stare ocividne, ja to uchovavam v triede tie data, proste mam atributy, ktore sa naplnia podla session, ak neni session tak sa inicializuju nejakou hodnotou a potom v handle tie data v atribute zmenim + v session tiez, robim to zle?

Editoval Raiper34 (4. 3. 2016 18:11)

Raiper34
Člen | 65
+
0
-
		public function handleRemoveColumn($databaseName)
{
    if($this->parent->isAjax())
    {
        $this->removeColumn($databaseName);
        $this->redrawControl();
    }
    else
    {
        $this->parent->redirect('this');
    }
}

public function handleGoToPage($pageNumber)
{
    if($this->parent->isAjax())
    {
        $this->currentPage = $pageNumber - 1;
        $this->session->getSection('datagrid')->currentPage = $pageNumber - 1;
        $this->redrawControl();
    }
    else
    {
        $this->parent->redirect('this');
    }
}

Horny funguje hned, dolny sa vykresli az pri dalsom poziadavku… nechapem preco ale… Aj pri formularoch to mam tak ze uplne rovnake skoro, jeden sa prekrelsi hned, druhy az pri dalsom poziadavku

Editoval Raiper34 (4. 3. 2016 18:40)

David Matějka
Moderator | 6445
+
0
-

A jak to posíláš do šablony?

CZechBoY
Člen | 3608
+
0
-

Btw lepsi getPresenter() misto parenta. Nekdy tuhle komponentu pouzijes v jiny komponente a uz nebude platit parent = presenter.

Raiper34
Člen | 65
+
0
-

No ja na zaklade toho goToPage nastavim odkial a kolko riadkov zoberiem z tabulk databaze omocou metody limit a tie data predavam do sablony metodou render tam $template->data

Raiper34
Člen | 65
+
0
-

Otazka ked pouzijem handle, tak ako to postupuje najprv sa znovu vytvori ta komponente a nakoniec sa aplikuju zmeny z handle a potom sa to vykresli? Alebo inak?

CZechBoY
Člen | 3608
+
0
-

Tak nejdriv se vytvori strom komponent, potom se vola handleXXX a pak render.

Raiper34
Člen | 65
+
0
-

Strom komponent, akoye sa komponenta znova zostavi? Ak hjej potom nechapoem preco to nefunguje :-D

CZechBoY
Člen | 3608
+
0
-

No jde se od presenteru → vytvori se komponenta, pokud v te komponente je dalsi komponenta, ktera prijima ten signal tak se vytvori. A takhle dokola az k te komponente, ktera ten signal zpracuje v handle.

CZechBoY
Člen | 3608
+
0
-

Tak si dumpni promenne v sablone pres

{dump($var)}

se zavorkami, bez nich to jde do tracyBar…

Editoval CZechBoY (5. 3. 2016 15:07)

Raiper34
Člen | 65
+
0
-

No vdaka uz to funguje, dal som manipulaciu s databazou do renderu :)