Komponenta – jak správně programovat „modul“?
- tatyalien
- Člen | 239
Dobrý den,
mám dotaz, nevím jestli postupuji správně, nebo to dělám špatně.
Vytvořil jsem si komponentu
class UserComponent extends UI\Control
která se mě stará defakto
o veškerou práci s uživatelem, od registrace, editaci údajů, změna
hesla, aktivace účtu, zapomenuté heslo,… v presenteru si pak jen
vytvořím:
protected function createComponentUser()
{
// $data - nastavení hlášek
// $emailSettings, - připojení na email (přihlašovací údaje)
// $this->getService('authenticator') - pro vygenerování správného hesla
// $this->backLink - přesměrování po přihlášení na správný presenter - view
return new UserComponent($this->user, $this->modelUser, $data, $emailSettings, $this->getService('authenticator'), $this->backLink);
}
Takže když jsem si udělal novej projekt, stačilo mě „copy and paste“ do nového projektu a defakto vše funguje jak má… pak mě jen stačí volat {control user:registration}, {control user:password},…
Teď jsem si začal dělat něco obdobného, různé výpisy zboží. Funguje
mě to v pořádku, takže kdekoliv v šabloně můžu načíst co chci,
napříkad nejprodávanější zboží se stránkováním a hned podtím zboží
závislé na levém menu atd… ale celá logika je tam braná jako v
„presenteru“, ale přitom je to UI\Control
. Bohužel
v některé situaci bych si dokonce potřeboval vytáhnout pro který render se
zrovna zobrazuje zboží [ne presenteru, ale komponenty] (hlavní zboží,
náhradní díly, …), například v továrničce pro filtr by bylo pro mě
jednoduší dle zvoleného view si vytáhnout data aktivních výrobců, ale
nemůžu zde pouzít $this->view
. Proto mám podobné
továrničky, které se liší jen v načtenejch dat a u zpracování submitu
se ukládá do jiného sessionu. Jdu na to špatně, nebo jdu správný směrem,
ale zapomněl jsem na nějakou „blbůstku“?
- Vojtěch Dobeš
- Gold Partner | 1316
Mám jenom maličkou poznámku: pokud to někdy budeš chtít Ajaxově rozhýbat, nebudu chtít být poblíž :). Vzteky sníš křeslo…
- tatyalien
- Člen | 239
Ajaxově mě to funguje (výpis zboží, stránkování, přidávání do
košíku)…
Registraci uživatele a změny, ajaxově nedělám…
Proto se taky ptám, jestli se to dělá takto, nebo ne… Přijde mě divný to všechno cpat do presenteru, kterej pak má „xy“ řádků a pro znovupoužitelnost z toho zobat jako holub…
Editoval tatyalien (18. 11. 2012 11:20)
- Vojtěch Dobeš
- Gold Partner | 1316
Tak to je zajímavý a gratulace… používání
{control component:neco}
totiž není kompatibilní se
snippety.