Jak do presenteru nainjektovat skalární proměnou z konfiguračního souboru
- Jan Suchánek
- Člen | 404
Do presenteru je pak davat nemusis, kdyz budou v service. Dej je do service.
- MartinitCZ
- Člen | 580
Nebo si udělej nějakou ParameterService a do ní si hod všechny parametry,
kterou si injectuješ do presenteru.
Nicméně doporučený způsob je ten, co tu popsal @jenicek
- David Matějka
- Moderator | 6445
Pokud potrebujes dostat parametr do jednoho konkretniho presenteru, muzes presenter registrovat jako sluzbu a parametr tam dostat pres setter:
services:
-
class: App\MyPresenter
setup:
- setFoo(%foo%)
To vsak nebude fungovat pokud potrebujes dostat parametr do BasePresenteru.
Funkcni pro vse a lepsi je, jak uz tu bylo zmineno, predavat onen parametr do sluzeb, pripadne do komponent. Obecnym „ParameterService“, ktere budou obsahovat vsechny parametry, se radeji vyhni. To uz rovnou muzes pouzit context :)
Editoval matej21 (19. 6. 2014 23:01)
- fary
- Člen | 155
Věc se má tak, že bych tu proměnnou (případně více proměnných) potřeboval dostat právě do BasePresenteru, který mám jako abstraktní. Kontext nepoužívám, zvykl jsem si na DI (a je to naprostá paráda :-) ). Abstraktní presenter si jako službu zaregistrovat nemůžu, protože se nevytvoří jeho instance (protože je abstraktní). Mohl bych si tedy vytvořit třídu, kterou zaregistruji jako službu a nainjektuju ji do BasePresenteru např. pomocí metody inject*, ovšem bude tam jedna třída navíc, která bude působit jako pěst na oko :-). Je to pravděpodobně lepší, než používat kontext a já souhlasím, ale musí existovat i nějaký hezčí způsob, jak toho docílit. Leda že bych BasePresenter dal jako neabstraktní, ovšem to je zase spíše takové obejítí problému, než jeho vyřešení.
- Oli
- Člen | 1215
Zaregistrovat si třídu, která ti obalí nějakou skupinu nastavení je podle mě validní. Já mám třeba takhle třídu pro nastavení aplikace: který objekty jsou zapnutý, kolik je ve stránkování položek na stránku, jestli mají články zapnutý komentáře, … a tu třídu si potom injectnu, kde potřebuju včetně basePresenteru.
- Oli
- Člen | 1215
@jenicek To si myslím, že už tam nepatří. Ta moje třída jen obaluje nastavení, které by mohlo být vždy u aktuální situace, ale tady je pěkně na jednom místě. Číselník z db už vnímám jako další závislost.
Nicméně záleží na situaci. Uměl bych si představit situaci, kdy například budeš takhle nastavovat personalizovaný články. Z configu potom taháš nějakej default nastavení a z db ho můžeš přepsat osobním nastavením uživatele.