Volání komponenty presenteru z jiné komponenty

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

Zdravím, měl bych otázku, zda se dá a jak udělat něco v tomto smyslu:

Presenter: http://pastebin.com/K77xZ1Mj
CssLoader: http://pastebin.com/1nQqEN45
AssetManager: http://pastebin.com/3XbWKVre
TestControl: http://pastebin.com/PwnpfLye

template.latte: {control css ‚test.css‘}

O co jde. Běžně v šablonách bych rád volal control na css a na js. To je v pohodě. Chtěl bych to ale zavolat i z komponenty. Tam mi to bohužel vrátí, že komponenta css neexistuje, ikdyž mi $this->getParent()->getComponent(‚css‘) vrátí tu komponentu CssLoader.

petr.jirous
Člen | 128
+
0
-

Jack06 napsal(a):

Zdravím, měl bych otázku, zda se dá a jak udělat něco v tomto smyslu:

Presenter: http://pastebin.com/K77xZ1Mj
CssLoader: http://pastebin.com/1nQqEN45
AssetManager: http://pastebin.com/3XbWKVre
TestControl: http://pastebin.com/PwnpfLye

template.latte: {control css ‚test.css‘}

O co jde. Běžně v šablonách bych rád volal control na css a na js. To je v pohodě. Chtěl bych to ale zavolat i z komponenty. Tam mi to bohužel vrátí, že komponenta css neexistuje, ikdyž mi $this->getParent()->getComponent(‚css‘) vrátí tu komponentu CssLoader.

Technicky vzato si v komponente muzes udelat tovarnicku, ale neni to asi nejlepsi reseni.

class Komponenta extends UI\Control
{
	public function createComponentCss()
	{
		return $this->getParent()->getComponent('css');
	}
}

tohle by fungovat mělo, ale budeš mít rozhozený komponent model… nebude lepší řešení, než mít CSS a JS v komponentě? např. oddělené šablony a includovat je?

Jack06
Člen | 168
+
0
-

No jde o to že budu mít třeba komponentu na vykreslení galerie. Tzn ta bude mít nějakou slideshow no a k tomu je zapotřbí css a js. Nejlepší mi přijde aby si komponenta řekla že to chce a pokud to ještě není naincludované, aby se to přidalo.

Jinak to co jsi mi napsal nefunguje. Viz ten TestControl, tam to přesně takto mám :-)