AJAX v komponeně a předávání parametru do render()

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

Dobrý den,

řeším teď problém s ajaxem zobrazovanou komponentou. Dostal jsem zadání na přepis existujícího kódu kvůli zrychlení. Původní struktura problému byla následující:

Pro zjednodušení to napíšu obecně:
Máme nějakou nabídku v db, pro ní je libovolný počet míst a pro každé místo libovolný počet roků. U každého roku si můžeme zobrazit detail.

Řešeno to bylo tak, že v komponentě nabídky se vytvořily komponenty pro místa a v nich komponenty pro roky.

U každého roku se pak vytvořila komponenta s detailem která byla defalutně skrytá a při kliknutí na button se AJAXem načetla její obsahová část (jediná součást komponenty viditelná před ajaxovým požadavkem je onen button) a vypsala se.

Moje řešení spočívá v tom, že všechny komponenty slučuji do jedné + komponenty pro detail.

V původním řešení se komponenta s detailem vytvářela až po vytvoeřní roku, čili už při vytváření znala místo a rok. To teď není možné, proto jí místo a rok předávám až do metody render() ze šablony, namísto konstruktoru.

Problém nastane ve chvíly kdy se pokusím o ajaxový požadavek – hodnota se do render nepředá.

Neví někdo proč tomu tak je a případně jak to obejít/opravit nebo to vyřešit jinak?

Omlouvám se za přílišnou obecnost, ale bohužel sem nemůžu postnout přímo kód.

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

Řešení tě asi nepotěší – do metody render skutečně nemá smysl nic předávat, s AJAXem to prostě není kompatibilní z hlubších principiálních důvodů. Správnou cestou je vše nastavit v továrničce, resp. v životním cyklu presenteru (action a render metody).

j0hny
Člen | 33
+
0
-

Díky za rychloou odpověď!

Toho jsem se bál, že touto cestou to nepůjde. Narazil jsem teď ale na Nette Multiplier, který se mi celkem zamlouvá a myslím že by mohlo být řešením použít ten, takže jdu studovat a případně postnu nějaký výsledek…