Jak hezky používat model v Presenteru
- Myiyk
- Člen | 321
Ahoj,
je všeobecně známo, že se nemá používat context.
Takže předpokládám že si mám modely načítat přes inject*()
- dotaz
Jak udělat, abych mohl volat
$this->frontModel->nejakyRepository->metoda() ?
(tohle by volalu třídu FrontModule\Model\nejakyRepository)
Mám více modulů a nechci mít všechny Repository na jedné hromadě.
- dotaz
Proč se modelům říká Repository, nebo nastala nějaká změna v modelech ?
- dotaz
Jak ideálně do modelů dostat proměnnou $this->lang
(má informaci o jazyku, na který je uživatel přepnut)?
Nehodlám jazyk předávat v každé metodě.
Měl jsem v projektu všechno na jedné hromadě, ale teď jsem to předělal na AdminModule a FrontModule. Proto chci také nějak hezky vyřešit ty modely, abych s nimi konečně měl klid.
- mkoubik
- Člen | 728
- dotaz
Proč se modelům říká Repository, nebo nastala nějaká změna v modelech ?
Model není třída, ale vrstva aplikace (tohle zmatení pojmů přišlo nejspíš z railsů?). Zatímco Repository je návrhový vzor který daná třída implementuje, proto to má často v názvu.
- Reloecc
- Člen | 15
Měl bych to forum pročítat častěji..
1. dotaz:
nově lze v nette 2.1 použít v každé službě (repository budeš mít jako službu) tyto dva způsoby:
ve starší verzi (v nové stále funkční) pak:
config.neon
V novější i starší verzi je správnější použít pro komponentu prohnanou skrz DI továrničky
inject* funguje u starší verze nette jen u presenterů
setup je možné použít i u služeb
do komponent lze služby předávat i v konstruktoru, pokud komponenta projde
DI, dohledá je nette sám
- Reloecc
- Člen | 15
3. dotaz
já za vhodné vidím:
- pro translator si vytvořit vlastní třídu (zaregistrovat ji jako službu, implementovat do ní Nette\Localization\ITranslator)
- všechny komponenty dědit z jedné třídy (např. MyControl)
- v MyControl nastavit translator (->setTranslator)
- v translatoru nastavit
$lang
v konstruktoru ze session - pokud nelze načítat ze session, (např. v případě volby jazyka
z domény) pak definovat lang v
Presenter::startUp()
pomocí nějakého$this->translator->setLang('cs-CZ')
- v krajním případě lze definovat proměnnou předáním parametru do setup funkce služby translator:
Editoval Reloecc (16. 7. 2013 17:40)