samoobnovenie komponenty

- bazo
 - Člen | 620
 
Zdravim,
mam vlastnu komponentu a chcel by som aby sa sama invalidovala a nasledne sa
automaticky prekreslila.
v sablone komponenty som jej html uzavrel do {snippet menuDragDrop}.
vytvori sa
<div id="snippet-menuDragDrop-menuDragDrop">
v handleri nejakej akcie by sa to teda malo invalidovat ale neviem s akymi
parametrami.
Skusal som
<?php
$this->invalidateControl('menuDragDrop') aj 'menuDragDrop-menuDragDrop'
?>
napriklad datagrid tam vola invalidate bez parametru.
diky moc za kazdu radu

- David Grudl
 - Nette Core | 8285
 
$this->invalidateControl('menuDragDrop') je v pořádku,
problém bude jinde. Můžeš popsat podrobněji situaci?

- bazo
 - Člen | 620
 
takto to funduje ak to zavolam v presenteri. ale ked to presuniem to handlera komponenty nic sa nestane.
<?php
class MenuDragDrop extends Control
{
public function handleItemDelete($item)
	{
		foreach($this->onItemDelete as $func)
		{
			call_user_func($func, $item);
		}
		$this->invalidateControl('menuDragDrop');//nic sa nestane
	}
}
?>
v samotnej sablone komponenty je uz {snippet menuDragDrop}

- David Grudl
 - Nette Core | 8285
 
A máš jistotu, že se ten handle skutečně volá? Prostě jestli není chyba někde mimo invalidateControl a snippet.

- bazo
 - Člen | 620
 
rad by som, ale tvoj email nepoznam
ale mozes si ten priklad stiahnut tu http://bazo.sk/…droplite.zip
aj ostatni, ktorych by to zaujimalo

- David Grudl
 - Nette Core | 8285
 
Určitě oddělej to
    public function __construct()
    {
        parent::__construct();
    }
tím odřízneš komponentu od zpracování stavů. Přihoď mi tam ještě nějaký presenter, prostě aby to šlo spustit.

- bazo
 - Člen | 620
 
ok, pridal som tam presenter aj sablonu ako to pouzivam ja, staci len vlozit
napr do skeletonu
http://bazo.sk/…droplite.zip

- Matúš Matula
 - Člen | 257
 
tak som sa na to pozrel a ide mi to..tusim, ze ti tam chybal zavinac
v sablone default.phtml pred {widget},
takze takto
@{block #content}
	@{control menuDragDropLite}
taktiez v @layout.phtml volaj 	@{include #content}
(# namiesto $)
toto by ti malo stacit na rozbehanie.