Podivné: jak předávat parametry v komponentách s továrnou PO ajaxovém požadavku?
- nettolog
- Člen | 68
Zdravím,
potřeboval bych v Latte zavolat komponentu, předat ji určité parametry
({control test vartest}
), s nimi pracovat uvnitř komponenty,
vykreslit ji a získat stejné parametry i při dalším načtení přes ajax.
Už jsem se do toho vážně zamotal.
Komponenta:
Jde mi tedy o to, jestli nějak můžu dostat proměnnou $test při dalších ajaxových volání. Nebo ji musím dát do odkazu a pak ji přijmout z handleClick? Ale co když tam jsou nějaké interní údaje? Posílat nějaký token? Nebo jak byste to řešili vy?
Praktický příklad: anketa, která má dva různé vzhledy, které se
liší podle toho, kde se anketa vykresluje. Na úvodní stránce bude její
pozadí barevné (předám při vykreslení true), jinde černobílé (předám
při vykreslení false). False je všude v pořádku (jen díky tomu, že
podmínka je if($test)
), true jen při načtení ankety. Jakmile
uživatel zahlasuje, objeví se null a problém je na světě.
Editoval nettolog (11. 7. 2015 22:28)
- Oli
- Člen | 1215
Je to jednoduché. Ty předáváš tu proměnnou $test
z presenteru, ale překresluješ jen vnitřek komponenty. Buď obal celou
komponentu snippetem
nebo si to předej pomocí set metody. Pokud teda víš co bude v té proměnné test. V konkrétním případě jestli jsi na homepage nebo někde jinde to už víš a můžeš to poslat s klidným svědomím setrem.
- David Matějka
- Moderator | 6445
A potrebujes ten parametr nastavovat ze sablony? Ve vetsine pripadu to vis jiz v presenteru – jako tvuj priklad s anketou, v homepage presenteru (treba v tovarne na komponentu..) proste pres setter nastavis komponente nejakou hodnotu. A je po problemech ;)
- nettolog
- Člen | 68
To je právě to, asi jsem použil špatný příklad pro mou situaci. Řeším komponentu, u které je nutné dodat vstupní parametry až jedině v latte. Nebo myslíš, že by to šlo i v tomto případě nějak přes presenter?
Řekněme, že mám hvězdičkové hodnocení článku, které se zobrazuje na Homepage, v detailu článku i v sidebaru. Komponentu tedy vytvářím v basepresenteru.
V presenterech pošlu do template query, v template pak foreach, kde předám id článku a vzhled hodnocení. V sidebaru bude třeba menší než v Homepage, apod. Nebo v sidebaru nepůjde hodnotit, jen se zobrazí aktuální stav hodnocení.
Nebo by šlo v komponentě zjistit, jaký view si ji vyžádal?
- David Matějka
- Moderator | 6445
@nettolog v tomto pripade bych nevytvarel komponentu v base presenteru, ale:
- v detailu vytvoris komponentu a hned znas ID, takze ho muzes predat
- na homepage bych pouzil multiplier