« Return to Thread: Bootstrapping modules with Zend_Application

Re: AW: Bootstrapping modules with Zend_Application

by Sebastian Krebs-4 :: Rate this Message:

Reply to Author | View in Thread



meloniasty schrieb:

Matthew Weier O'Phinney-3 wrote:
  
-- meloniasty dawid.melewski@... wrote
(on Friday, 24 April 2009, 07:04 AM -0700):
    
Matthew Weier O'Phinney-3 wrote:
      
-- meloniasty dawid.melewski@... wrote
(on Friday, 24 April 2009, 03:47 AM -0700):
        
Stefan Gehrig wrote:
          
-----Ursprüngliche Nachricht-----
Von: Matthew Weier O'Phinney [matthew@...] 
Gesendet: Donnerstag, 16. April 2009 13:07
An: fw-core@...
Betreff: Re: [fw-core] Bootstrapping modules with Zend_Application

-- Stefan Gehrig gehrig@... wrote
(on Thursday, 16 April 2009, 12:25 PM +0200):
            
I'm currently developing the core structure for a new
              
module-based
      
Zend
          
Framework MVC application. In general Zend_Application provides
provisions
for simple module bootstrapping with its
Zend_Application_Resource_Modules
and Zend_Application_Module_Bootstrap. 
But as Zend_Application_Resource_Modules bootstraps all available
              
modules
          
on
            
the application bootstrap I coded my own front-controller-plugin
              
to
      
do a
          
module bootstrapping on preDispatch(). The module bootstraps are
              
all
      
subclassed Zend_Application_Module_Bootstrap classes (I think
              
that's
      
what
          
this class is supposed to do).
To cut a long story short:
	Why do I have to implement
Zend_Application_Bootstrap_Bootstrapper::run() in my module
              
bootstrap
      
classes? I think this is somehow needless as
Zend_Application_Resource_Modules (on which I based my
              
bootstrapping
      
plugin)
            
only calls Zend_Application_Bootstrap_Bootstrapper::bootstrap().
              
A
      
run()-call wouldn't make much sense. Perhaps it's possible to
              
implement
          
Zend_Application_Module_Bootstrap::run() as an empty method to
              
allow
      
for
          
more simple modules bootstraps. Just a thought...
              
This is fixed in trunk.

-- 
Matthew Weier O'Phinney
Project Lead            | matthew@...
Zend Framework          | http://framework.zend.com/



            
hi, i have similar problem with Zend_Application_Resource_Modules (i
think
so)

i'm using ZF 1.80dev

my config.ini has:
...

resources.View.encoding = "UTF-8"
resources.Layout.layout = "default"
resources.Layout.layoutPath = APPLICATION_PATH "/layouts"


resources.Modules=
Cms.resources.Layout.layout="cms"
Cms.resources.FrontController=
Cms.resources.View.title="CMS "
Cms.resources.View.encoding="utf-8"

Api.resources.Layout.layout="api"
Api.resources.FrontController=
Api.resources.View.title="Api"
Api.resources.View.encoding="ISO-8859-1"

for each module (default, cms, and api) i want to load different
          
layout,
      
but
my application initializates 3 layouts and load only cms for any
          
module,
      
and
i dont know why?

in Zend_Application_Module_Bootstrap is
<qoute>
if ($application-> hasOption($key)) {
            // Don't run via setOptions() to prevent duplicate
initialization
            $this-> setOptions($application-> getOption($key));
        }
</qoute>
when i extends Zend_Application_Module_Bootstrap to own
Meloniasty_Application_Module_Bootstrap and only i've deleted code
          
above
      
this didnt help because then its load only default

so, is there any solution for this problem?
          
Looking at your config file, you're missing the moduleDirectory
directive -- so no modules are being found.
        
this is only  part of my config file, i have moduleDirectory

autoloadernamespaces.0 = "Zend_"
autoloadernamespaces.1 = "Meloniasty_"

phpsettings.display_errors = 0
phpsettings.error_reporting = 8191
phpsettings.date.timezone = "Europe/Warsaw"

bootstrap.path = APPLICATION_PATH"/../library/Meloniasty/Bootstrap.php"
bootstrap.class = "Meloniasty_Bootstrap"

pluginPaths.Meloniasty_Bootstrap_Resource="Meloniasty/Bootstrap/Resource"

resources.FrontController.throwexceptions = false
resources.FrontController.params.prefixdefaultmodule = true
resources.FrontController.moduledirectory = APPLICATION_PATH"/modules"
resources.FrontController.defaultModule = "default"

resources.Layout.layout = "default"
resources.Layout.layoutPath = APPLICATION_PATH "/layouts"

resources.Modules=
Cms.pluginPaths.Meloniasty_Bootstrap_Resource="Meloniasty/Bootstrap/Resource"
Cms.resources.Layout.layout="cms"
Cms.resources.FrontController=
Cms.resources.View.title="CMS "
Cms.resources.View.encoding="utf-8"

Api.pluginPaths.Meloniasty_Bootstrap_Resource="Meloniasty/Bootstrap/Resource"
Api.resources.Layout.layout="api"
Api.resources.FrontController=
Api.resources.View.title="Api"
Api.resources.View.encoding="ISO-8859-1"

application works fine with modules but all modules load all settings

i have Cms_Bootstrap, and Api_Bootstrap class

i.e.
http://app.localhost/ - with settings above app load layout 'cms', but i
think it should 'default'
http://app.localhost/cms/ - load layout 'cms' - its ok
http://app.localhost/api/ - load layout 'cms' - itsn't ok, it should
'api'

i dont know, maybe zend_application works like that?
      
This shouldn't matter, but... what happens if you lowercase the
configuration keys:

    cms.pluginpaths....
    api.pluginpaths....

-- 
Matthew Weier O'Phinney
Project Lead            | matthew@...
Zend Framework          | http://framework.zend.com/


    

no, its still doesnt work

why in Zend_Application_Resource_Modules all modules are initialized? i
think it should only initialize only current module, when i run cms module
its should bootsraping only Cms_Bootstrap and load settings from cms, am i
right?


  


It initalized all modules, because some modules maybe need other modules to work, depending on your design. And it seems, that 'cms' is simply executed later and so overwrites settings from 'api'. You can write a frontcontroller-plugin to change your layout depending on request. Is that a solution?

 « Return to Thread: Bootstrapping modules with Zend_Application