invalidace všech komponent
- Paradiso
- Člen | 101
Ahoj, nevím jak to přesně popsat.
Mám komponentu
class DataGrid extends Control {...}
v presenteru si pak vytvořím:
public function createComponentOrders(){
return new \MyComponents\DataGrid($this->context->database);
}
public function createComponentStornoOrders(){
return new \MyComponents\DataGrid($this->context->database);
}
první datagrid zobrazí objednávky bez stornovaných, druhý zobrazý pouze stornované
a teď když změním pomocí selectboxu (ajaxově) stav na storno, tak se mi podaří invalidovat order, ale už nevím, jak invalidovat i stornoOrders
Editoval Paradiso (8. 5. 2013 16:58)
- thunderbuff
- Člen | 164
$this->presenter a $this->getPresenter() vrací to samé, ale jde to použít až v momentě, kdy je komponenta připojená do stromu komponent. Tedy ne v konstruktoru, ale až v nějaké metodě volané během životního cyklu komponenty. Pokud se ti stornoOrders nedaří invalidovat, zkus se podívat, co ti vrátí response z ajaxového requestu.
//EDIT: názvy snippetů jsou case sensitive, takže $this->presenter->invalidateControl(‚StornoOrders‘) není to samé, co $this->presenter->invalidateControl(‚stornoOrders‘), pozor na to
Editoval thunderbuff (8. 5. 2013 22:06)
- Paradiso
- Člen | 101
Nevím, jestli jsem to dobře popsal, tak to zkusím raději ještě trošku přiblížit
v šabloně DataGrid mám:
{snippet table}
tabulka
{/snippet}
komponenta invaliduje snippet takto:
class DataGrid extends Control {
....
public function handleEditableSelect($id, $val){
....
$this->invalidateControl('table');
....
}
...
}
a v presenteru mám
public function createComponentOrders(){
return new \MyComponents\DataGrid($this->context->database);
}
public function createComponentStornoOrders(){
return new \MyComponents\DataGrid($this->context->database);
}
v šabloně v presenteru pak jen {control orders}{control stronoOrders}
Když udělám akci nad Orders, tak se zavolá
..?do=orders-editableSelect&…
takže se zavolá správně pouze handle pro Orders
pokud nastavím $this->getPresenter()->invalidateControl(‚table‘); tak se nestane nic ani s aktuální komponentou, pokud $this->invalidateControl(‚table‘); tak se invaliduje, alespoň ta aktuální