Vytvoření jednoduché komponenty nebo multiplieru?

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

Zdravím,
mám v projektu obecnou metodu na vytváření komponent:

public function createComponent($name)
{
	...
}

Z $name vytvořím název třídy a vrátím … Problém nastává, když místo jednoduché komponenty chci multi komponentu volanou pomocí např. {control singleProduct-$productId}. Do metody createComponent dostanu pouze string singleProduct, ale už se mi nedaří zjistit jestli, jestli ta komponenta byla volána s parametrem za pomlčkou a tedy bych měl vracet Multiplier místo samotné komponenty. Je možné to v té metodě nějak zjistit nebo to obejít nějak jinak?

A potřeboval bych to obecně, nemůžu psát konkrétní továrničky na konkrétní komponenty.

Díky moc za pomoc!

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Celý string tam nikdy neobdržíš – to je stavebním kamenem celé architektury. Další createComponent() (s další částí toho stringu) se bude volat až na instanci, co vrátíš. Jde o to, že část za pomlčkou není nějakým parametrem, ale názvem vnořené komponenty (názvem potomka komponenty, která má název před pomlčkou).

singleProduct-$productId

a = presenter->createComponent(singleProduct)
b = a->createComponent($productId)

Editoval vojtech.dobes (5. 2. 2014 10:14)

Morfeo21
Člen | 35
+
0
-

Díky za odpověď, je mi to asi jasné :)

Neexistuje tedy způsob jak to zjistit? Nebo nějaké jiné řešení?
Případně je nějaký způsob jak dostat z šablony do komponenty nějaký parametr?

David Matějka
Moderator | 6445
+
0
-

cela cesta se posila do getComponent