Prúběh presenteru a zpracování metody redrawControl
- Fooly
- Člen | 26
Zdravím, chtěl bych se zeptat, jak přesně funguje presenter a zvláště
jeho překreslování ajaxem.
Vím že presenter nejdříve volá action, handle, beforeRender, render.
Co se ale stane pokud použiji v handle metodě
$this->redrawControl(‚snippet‘) ?
tím že kliknu na tlačítko které takový handle zavolá se stane to že se
provede všechno plus to co je uvnitř toho handlu?
Nějak se zamotávám, zkrátka mi jde o jednu věc, vysvětlím na konktrétním příkladu.
Mám tabulku se záznamy a záznamy se dají ajaxově smazat.
Záznamy se načítají v action
<?php $this->records = $this->recordsModel->getAll(); //
selection ?>
Poté se v render metodě předávají do template.
V handle metodě u smazání je:
<?php
$this-recordsModel->delete($id);
$this->redrawControl('recordsSnippet');
?>
Počítal jsem s tím, že když se zavolá redrawControl() tak se zavolá znovu ta action, a tudíž záznamů bude o jeden méně. Ale záznam mi tam zůstane dokud nezavolám redraw znovu, nebo nerefreshnu stráknu.
Netuší někdo čím by to mohlo být?
- David Matějka
- Moderator | 6445
ne, action se znovu nezavola, takze muzes treba to nacitani zaznamu presunout do render metody.
redrawControl
pouze jen oznaci konkretni snippet, ze se ma pri
vykreslovani sablony vykreslit a vratit v payloadu, nijak to neovlivni cyklus
presenteru.
- Fooly
- Člen | 26
Díky za odpověď, těď už chápu kde je chyba, $this->records bych
měl načítat až v render metodě protože se nejdříve musí provést
samotné smazání v handle.
Dovolte mi tedy ještě jednu otázku se kterou se peru.
Mám komponentu na mazání fotek, která má checkboxlist, jehož items jsou
z databáze vytažené fotky.
Načítají se přímo v metodě createComponentRemovePhotosForm().
Při submitu se zaškrtnuté smažou, a měl by se překreslit formulář.
V tomto případě by mě tedy zajímalo, jelikož onSuccess je také vlastně
handle metoda, proč když se fotky smažou, tak jsou pořád obsažené v tom
formuláři.
Co mě napadlo, že je to z důvodu validace, že formulář po submitu
zůstane stejný jako byl aby se zachovala validace. Zkoušel jsem to i bez
ajaxu, a stejný výsledek, dokud jsem neobnovil stránku, tak tam smazaná
fotka zůstala.
- David Matějka
- Moderator | 6445
Ano, aby se formular mohl zpracovat, ta se pred tim musi znovu vytvorit – aby nette vedelo jake fieldy tam jsou, jaka jsou validacni pravidla, onSuccess callback. Budes v tom onSuccess upravit seznam items