Vlastní router – předání Entity do presenteru
- BuGeR
- Člen | 45
Ahoj,
vytvořil jsem si vlastní router, který funguje následovně:
- z (sub)domény zjistí, o jaký web (entita Site) se jedná
- ze zjištěné entity Site, si ještě zjistí její defaultní jazyk (entita Language)
- pokud pak uživatel napiše třeba: nasweb.eu/sk, a zjistí se, že daný web (Site) má defaultně slovenštinu, tak to /sk zahodí. Pokud se chce uživatel dostat pak třeba na anglickou verzi, tak dopíše /en, atd..
- funguje to samozřejmě i tak, že pokud uživatel nezadá jazyk, tak se automaticky doplní ten defaultní
Z toho všeho vyplývá, že jsem si na základě URL našel entity Site a Language. Tyhle 2 entity bych pak chtěl předat do presenteru. Zkouším to přidat do parametrů přes $appRequest->setParameters(), ale tohle nefunguje. Vypadá to, že on potřebuje jen čisté pole složené ze stringů (popř. čísel).
Existuje nějaký jiný (čistý) způsob, jak si do presenteru předat ty 2 entity, které jsem již načetl v routeru?
Díky.
- newPOPE
- Člen | 648
Niekedy to určite išlo ale verziu ti nepoviem.
No dôležitejšie je, že to čo chceš nie je moc dobrý prístup. Síce to znie cool, „už som to nacital prečo by som to robil znovu“ ale cool to určite nie je.
Skôr by som sa v routeri snažil len čo najrýchlejšie overiť to čo potrebujem a načítanie dát/entít robil až tam kde je to v poriadku a to napr. Presenteri, sluzbe…
- Oli
- Člen | 1215
Máme to stejně. Pokud máš tu službu jako službu zaregistrovanou, tak stačí si tam vytvořit nějakou property. Protože DI ti vrátí pokaždé stejnou instanci, tak tam ten jazyk mít budeš.
Ideálně bych ten jazyk nastavoval v konstruktoru aby pak nešel za běhu změnit (pokud to z nějakého důvovu nepotřebuješ).
Pokud budeš mít víc těch služeb (pro každou část jednu) a ne jednu, tak na tom nevidím nic špatného.
- akadlec
- Člen | 1326
Ad entity v routeru, před nette 2.4 sem používal tryCall modifikaci, která dokázala vytáhnout entitu z doctrine a tu dovézt do action/render/handle. Využívalo to anotace dané metody. Jenže po přechodu na 2.4 je to problém protože nette je více strict, takže entitu musím zpracovat už v routeru, takže filter in/out.
Tuhle „black magic“ jsem měl i pro persistentní parametry což je asi to co BuGer řeší?