snippety pro componenty uložené v Containeru

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

Ahoj,
nefungují mi invalidace snippetů component uložených v Nette\ComponentModel\Container. Snippet se vůbec nepošle, zkoušel jsem to i zadat zjednodušeně do Fifteen.

protected function createComponentTabs(){
	$tabs = new \Nette\ComponentModel\Container;
	$tabs->addComponent($this->componentFifteen(), 'fifteen');
	return $tabs;
}

Invalidace jsem zkoušel takto:

public function renderDefault(){
	$this['tabs']->getComponent('fifteen')->invalidateControl();
}

Nechal jsem i invalidaci přímo v tovarně komponenty fifteen. Zkoušel jsem to i v mé aplikaci a když jsem načetl bez containeru tak vše v pořádku.

Ještě načítání šablony:

{foreach $presenter['tabs']->getComponents() as $component}
	{control $component}
{/foreach}

Potřebuji aktualizovat snippety zvlášť.. ne všechny componenty.
Jediný funkční řešení mi funguje pokud ukládám nazvy komponenty s nějakým prefixem.

Ještě při testování ve fifteen jsem narazil na nedefinovanou proměnou $since v https://api.nette.org/…ter.php.html#1106
To s dotazem nemá nic společného …

Díky za každé postrčení.

zarubik
Člen | 31
+
0
-

Nikdo nic, prosím? Nebo je to bug Nette?

Editoval zarubik (16. 11. 2011 8:00)

Filip Procházka
Moderator | 4668
+
0
-

Zkus to takto

protected function createComponentTabs()
{
        $tabs = new Nette\Application\UI\PresenterComponent;
        $tabs->addComponent($this->componentFifteen(), 'fifteen');
        return $tabs;
}

Jako bonus ti bude fungovat

public function renderDefault()
{
        $this['tabs']['fifteen']->invalidateControl();
}

:)

Editoval HosipLan (16. 11. 2011 8:26)