Invalidace snippetu komponenty s jiným rendererem neprojde

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

Tak nevím zda jsem něco nepochytil blbě nebo je to žádoucí chování a nevyhovuje jen mě, ale pokud udělám vykreslení komponenty takto:

	{control avatar:settings}

jednoduše proto že si typ šablony nadefinuju až v latté a né v php a pak udělám nějaký ajax call uvnitř toho controlu a invaliduju nějaký snippet tam, tak mě to chce vykreslit s default šablonou :( zatím sem to obešel tím že šablonu si ještě natvrdo definuju v presenteru kde vytvářím daný control, ale to se mě moc nelíbí :( rád bych všechny šablonové věci měl v šabloně a mimo phpko.

David Matějka
Moderator | 6445
+
0
-

je to „known limitation“. Pri ajaxovem requestu se provadi pouze invalidovane casti. Jelikoz je invalidovana pouze komponenta a ne sablona, kde to vykreslujes, zavola se pouze komponenta a beh sablony se ukonci. A jelikoz se nevi, s jakou metodou render se to vola, tak se zavola vzdy render.
Ja se snazim ty parametry komponenty definovat vzdy v presenteru v createComponent*
Alternativou je obalit vykreslovani snippetem. Imho by mela fungovat i snippetArea. Pak ale musis invalidovat i ten obalovaci snippet

koukni taky do tohoto tematu, kde se to take zminuje…

Editoval matej21 (17. 12. 2014 17:35)

akadlec
Člen | 1326
+
0
-

no já to nějak pořešené zatím mám, resp. já nemám vícero render metod, ale vše si to na začátku odchytím a jen měním to jaká šablona se použije.

Takže asi holt jiné východisko není než si toto definovat v createComponent je tak?

David Matějka
Moderator | 6445
+
0
-

Takže asi holt jiné východisko není než si toto definovat v createComponent je tak?

je to imho nejlepsi reseni. Jeste me napadaji reseni, jako ze by ta komponenta ulozila nekam do js nebo data atributu info, ktera render metoda byla zavolana, to info se pak pripojilo do ajax requestu a komponenta by se dle toho vyrenderovala.