login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ Zend ] Hergebruik van controllers (Opgelost)

Offline xSc - 08/08/2011 10:58 (laatste wijziging 09/08/2011 16:13)
Avatar van xScOnbekend Ok, Zend wordt steeds duidelijker.

Ik vraag me het volgende af:

In mijn Zend app heb ik een aantal formulieren. Nu heb ik X controllers, met daarin indexAction (voor een lijst), editAction, addAction en deleteAction.

Een aantal controllers is dus bijna hetzelfde, alleen roep je een andere mapper en form aan. Hoe los je dit gemakkelijk op?

6 antwoorden

Gesponsorde links
Offline MiST - 08/08/2011 11:17 (laatste wijziging 08/08/2011 11:18)
Avatar van MiST Lid Met een Subklasse van Zend_Controller_Action die je voor die controllers gebruikt of met Action Helpers.

Nuttige ZF video tutorials op http://www.zendcasts.com (oa voor Action Helpers)
Offline xSc - 08/08/2011 11:20 (laatste wijziging 08/08/2011 11:21)
Avatar van xSc Onbekend Hallo MiSt,

even een voorbeeldje:

[Plaatscode: 141193

Nu heb ik ook een controller UserController, maar dan heb ik niet $editForm = new Site_Form_Company();, maar $editForm = new Site_Form_Company();
Offline ThAlmighty - 08/08/2011 20:57
Avatar van ThAlmighty HTML beginner Als ik zo je titel lees dan denk ik gelijk aan extenden, of subklasses zoals xSc zegt. Begrijp alleen wel goed dat als je een soort generieke manier maakt om je controllers te behandelen, dat je wel heel goed moet weten wat je wilt en hoe flexibel je het wil. Het risico is namelijk heel snel dat je toch allemaal kleine uitzonderingetjes wil en dan eigenlijk onhandiger gaat coderen dan je in eerste instantie zal doen. Al met al is cntrl+c en cntrl+v zo ingedouwt. Anyway, ziet het als een uitdaging, de beste truuc is om het allemaal zo simpel en essentieel nodig te houden.

Voorbeeldje van wat ik doe:
Plaatscode

Hierin zie je heel duidelijk dat ik het login en rechten checken erindoe, alsmede een paar standaard variabelen alvast assign aan Smarty en aan de class. Nu is dit nog een oude variant, maar in mijn huidige setup heb ik ook Controller classes die ik extend waarin dus - zoals jij wilt - de 90% van het onzin werk gedaan word qua formuliertjes en dat soort onzin.
Offline xSc - 09/08/2011 09:40
Avatar van xSc Onbekend @Tha, bedankt voor je uitleg.

Ik begrijp het. Hieronder deel ik wat code, die ik heb gemaakt:

Plaatscode: 141199

Ik moet dus een andere mapper en andere forms aanroepen, maar de afhandeling is hetzelfde. De validators enz. staan nl. in het form zelf.
Offline MiST - 09/08/2011 12:54
Avatar van MiST Lid $_request hoef je niet te herdefiniëren. Request is protected in zijn superklasse (Zend_Controller_Action) dus je kan ze gewoon bereiken vanuit je subklasse (met $this->getRequest() (voorkeur) of met $this->_request (af te raden))

De voorkeur volgt uit de scope van de functies/variabelen.
Offline xSc - 09/08/2011 14:52 (laatste wijziging 09/08/2011 14:55)
Avatar van xSc Onbekend Sorry, mist, dat klopt. Het is gelukt met een action helper.

Action helper:
Plaatscode: 141200

Controller:
Plaatscode: 141201

Model met gets en sets:
Plaatscode: 141202

abstract class met aantal standaard methoden (voor o.a. bovenstaand model).
Plaatscode: 141203

Table mapper:
Plaatscode: 141204

Zoals hierboven werkt het zoals verwacht. Ik kan de dus heel veel hergebruiken (tablemapper, controller (action helper).

Graag hoor ik jullie commentaar. Ik ben nl. 2 weken geleden serieus begonnen met Zend Framework.
Bedankt door: Stijn
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.325s