Předávání „globálních“ parametrů do šablony
- ales.k
- Člen | 6
Ahoj,
mám objekt – například uživatele – se kterým chci pracovat na více stránkách (více presenterech) webu. Je tedy potřeba dostat tento objekt jako parametr do šablony.
A teď jak toho docílit správně?
1. Vytvořit si komponentu – v tu chvíli mi
vyvstávají další nejasnosti:
1.1 Kde tuto komponentu vytvářet a předávat závislosti (nemůžu ji přece
vytvářet v každém presenteru znovu a vytvářet ji v nějakém abstract
presenteru mi nepřijde flexibilní)?
1.2 Jak komponenta pozná, na kterém presenteru se nachází? (třeba ji chci
spouštět jen na určitých presenterech)
2. Použít něco jiného než je komponenta
2.1 Líbilo by se mi nastavit si nejaký „posluchač“ (dát mu závislosti
přes DI), který ví, na kterém(ých) presenteru se má spustit a vložit
parametry do šablony.
Díval jsem se na „životní cyklus presenteru“, zkusil jsem uživatele do šablony předávat v abstract presenteru (a ty presentery, na kterých to potřebuji z něho dědí) – ale nejsem s tím spokojen.
Případně pokud na to existuje nějaký balíček, tak můžete postnout odkaz.
Děkuji za všechny rady.
Editoval ales.k (22. 4. 2019 18:04)
- Ondřej Kubíček
- Člen | 494
a user je jen příklad? pokud ne, tak $user
je k dispozici
v šablonách automaticky
jinak nejjednodušší varianta je mít nějaký BasePresenter – společný
předek pro presentery a tam setnout proměnou pro šablonu
- Šaman
- Člen | 2663
Komponenta se „spustí“ až když ji vykresluješ. Samotná metoda
createComponentXxx()
v presenteru nic nespouští. Takže není
problém ji mít v nějakém předkovi a vykreslovat jen v některých
šablonách.
Ale user
není komponenta, jen proměnná. Když stačí
proměnná, je komponenta zbytečny overkill.
A konkrétně ten $user
už je v presenterech předem
injectnutý, jak už psal Ondřej.
Editoval Šaman (22. 4. 2019 20:09)
- ales.k
- Člen | 6
No, přesnější by byl příklad nákupního košíku, který je
v záhlaví webu, nebo určité sub-menu, které je jen na některých
stránkách. Možná ještě lepší příklad – výpis 3 nejnovějších
článků. Zkrátka něco, co je vypsáno na více stránkách, ale ne na
všech.
A může to být i nějaká funkčnost, ne jen předání jednoho parametru do
šablony (např to vytažení článků z DB, výpis submenu na základě
přihlášeného uživatele/nebo dat v session apod.).
Znamená to tedy, že metoda createComponentXxx() nemusí být v presenteru uvedena a komponenta bude přesto fungovat při požadavku na vykreslení v šabloně?
Editoval ales.k (23. 4. 2019 7:00)
- Ondřej Kubíček
- Člen | 494
tak to se ti hodí ta komponenta…
createComponentXxx()
potřebuješ, nacpal bych to do toho
BasePresenteru a pak to můžeš použít kdekoli…