Jak si nejlépe předat data z configu v modulární aplikaci?
- Oli
- Člen | 1215
Ahoj,
jaký je best practice pro předání dat z configu v modulární aplikaci?
Když jsem nepoužíval moduly (jen front a admin module), tak jsem měl třídu
AppSettings
, které jsem předal hodnoty z
parameters:
appSettings:
# ...
Myšlenka je taková, že: Mám základ společnej pro celou aplikaci. Tady bych chtěl nějaký základní defaultní nastavení celé aplikace. Každej modul by potom měl svoje vlastní nastavení, s tím, že pokud by nebylo řečeno (napsáno) jinak, tak by se použili ty nadřazené defaultní hodnoty.
Abych uvedl nějaký konkrétní příklad, tak aplikace bude mít například nastavení
autora
(jestli se bude/nebude vypisovat autor u jednotlivých příspěvků a jaký bude zdroj dat)počet příspěvků na stránce
a moduly budou články
, statické stránky
,
novinky
.
V defaultní aplikaci nastavíme, že chceme uvádět autora jako usera aplikace a počet příspěvků na stránku bude 20. To se předá i těm modulům a oni to mohou přepsat. Takže by to mohlo vypadat nějak takhle:
články:
author: author // zdroj dat se přepíše na tabulku/entitu author
// počet příspěvků je default
nejčtenější: 3 // nastavení, které není v defaultu vubec a je tedy jen pro modul články
statické stránky:
author: null // statické stránky nemají autora. V jiném sestavení se s autorem může pracovat, proto se předává
// počet příspěvků na stránku se do tohodle modulu vůbec nepředává
novinky:
// author je default
// počet příspěvků je default
A teď teda k otázce: Jak si to nejlépe předat těm jednotlivým modulům, tak aby byla posloupnost: default aplikace → default modulu → nastavení v presenteru/modelu/komponentě
Napadá mě mít nějakou třídu, klidně AppSettings a ArticleSettings. ArticleSettings by si podědil tu AppSettings a přijmul by svoje defaultní nastavení z configu, které by přepsalo to defaultní nastavení aplikace. To by šlo ještě změnit, pokud bych potřeboval vypsat v modulu články třeba jen 5 nejčtenějších na stránku, tak bych si zavolal něco jako:
$this->articleSettings->setMostRead(3);
Je tohle dobrý postup?
Snad jsem to popsal aspoň trochu pochopitelně…
- Oli
- Člen | 1215
S tagama jsem nikdy nepracoval, takže nevím jestli to „jsou registrovaný jako služby s tagem“ je nějak nutný. Btw. nebyla by špatná přednáška, kucharka, rozvedení v dokumentaci na co ty tagy jsou a jak se daji vyuzit :-)
Ale ani mě nepřijde, že to je stejnej problém. Ty tam máš nastavení každého modulu separátně a v db (ale to asi není podstatný), já chci jedno nastavení, které se může na 2 úrovních přepsat. Nebo jsem něco přehlédl?
Jakej má prosím postup, kterej popisuješ v tom vlákně výhody oproti tomu co jsem navrhl já? Na první pohled se mě to zdá složitější.
Díky