[PHP] Zend Framework module bootstrap

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

In een Zend Framework applicatie heb ik gekozen voor een modulaire opzet met twee modulen default en admin. Hier heb ik naar wat tutorials voor gekeken en heb het als volgt opgezet:

1. De modules heb ik gemaakt met zend tool, zf create module, etc.
2. Daarna:

code:
1
2
3
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleDefault = "default"
resources.modules[] =


Toevegoegd.
3. Vervolgens naast mijn bootstrap.php in application folder ook een Default_Bootstrap en Admin_Bootstrap opgezet. Deze extenden zoals het hoort Zend_Application_Module_Bootstrap

Dit werkt nu wel, alleen het vreemde is ZF voert bij het laden van default module beide bootstraps uit. Als in de admin bootstrap een functie _initTest() maak met echo 'test' erin, komt dit op de pagina te staan terwijl de huidige module dan admin is.

Ik heb hier wel nar gezocht en zag dat anderen op mailinglists hier ook naar vroegen maar niemand gaf er echt antwoord op. Is dit de bedoeling? Want lijkt me niet? Iemand die het fixed heeft of het op een andere manier doet?

Voordeel van de aparte bootstrappers vind ik dat je o.a. authenticatie kan initialiseren vanuit de admin bootstrap bijv.

Acties:
  • 0 Henk 'm!

  • Barleone
  • Registratie: Maart 2009
  • Laatst online: 06:09
Verwijderd schreef op woensdag 27 juli 2011 @ 00:32:
Dit werkt nu wel, alleen het vreemde is ZF voert bij het laden van default module beide bootstraps uit. Als in de admin bootstrap een functie _initTest() maak met echo 'test' erin, komt dit op de pagina te staan terwijl de huidige module dan admin is.

Ik heb hier wel nar gezocht en zag dat anderen op mailinglists hier ook naar vroegen maar niemand gaf er echt antwoord op. Is dit de bedoeling? Want lijkt me niet? Iemand die het fixed heeft of het op een andere manier doet?
Daar is eigenlijk ook niet heel veel over te vinden, maar als je normaal zoekt vind je wel enkele serieuze blogs en implementaties om het gewenste gedrag te verkrijgen. Misschien heb je er overheen gekeken; hier een duwtje in de goede richting: zend framework module bootstrap (één van de belangrijke hits is weierophinney.net)
offtopic:
Verder: zoeken, lezen, zoeken totdat je een werkbare situatie hebt gevonden. Het vereist wat tijd, maar je moet er zelf je tijd insteken, dat heb ik (en 99% van de andere ZF developers ook gedaan). De info staat gewoon duidelijk beschreven op internet (helaas niet - of niet duidelijk - in de zend.com documentatie en dat is inderdaad een fail). :F


Het hele idee (/de bedoeling) is (voor zover ik me kan herinneren) dat elke module gebootstrapt wordt, zodat iedere module gereed is om uitgevoerd te worden. Je moet ZF bootstraps echt serieus zien als opstarters. Niet als entrypoints.

Ik geef toe: ik vind dat dat concept enorm slecht uit de verf komt. :-(

[ Voor 36% gewijzigd door Barleone op 27-07-2011 01:12 ]

Tweakers.net 6 nostalgie! - Wayback Machine
Have you tried turning it off and on again?


Acties:
  • 0 Henk 'm!

  • Sissy boy
  • Registratie: Januari 2010
  • Laatst online: 04-09 19:28
Zend zal inderdaad altijd alle Bootstraps doorlopen van alle beschikbare modules. Alle functies die zich in de Bootstraps bevinden die beginnen met een '_init' zullen dan ook allemaal doorlopen worden. In jou geval zullen dus altijd de default bootstrap en de admin bootstrap worden doorlopen, ongeacht in welke module de gebruiker zich bevindt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie reacties. Ik heb het e.e.a. doorgelezen en is me al wat duidelijker geworden. In mijn geval hoeft zo'n module bootstrap niet echt gevuld te worden omdat ik alle resources in de frontend en backend nodig heb. Toch vind ik het enigzins matig dat standaard alles geladen wordt, hier kan je wel overhead door krijgen.

De oplossing van: http://binarykitten.me.uk...-with-zend-framework.html vind ik minder netjes omdat je hierdoor eigenlijk het bootstrappen gaat misbruiken, of in iedergeval de verleiding groot wordt.

Maargoed, bedankt voor de links. Ik heb besloten om het op de volgende manier op te lossen: http://blog.vandenbos.org...-framework-module-config/

Op deze manier heb je dus een config per module en kun je daarin o.a. je frontcontroller plugins laden. Een van deze plugins zou bijvoorbeeld ACL of Auth kunnen zijn voor je backend. In ons geval voor de frontend een plugin die alle categorieën laadt.

Mijn intentie is om een applicatie te bouwen met een backend en frontend in een project. Ik heb hier ook naar gezocht en de module implementatie lijkt mij de beste keus. Anders moet je 2 zend framework projecten gaan maken en allerlei links leggen.

[ Voor 11% gewijzigd door Verwijderd op 27-07-2011 11:11 ]