-- Terre Porter <[EMAIL PROTECTED]> wrote (on Tuesday, 18 March 2008, 02:49 PM -0400): > > Sorry #2 did work. It returns either a single directory or an array of > directorys, depending on what set up is used and if a module name was > specified. I got intrupted when writing the e-mail, and hit send to fast... > > http://framework.zend.com/issues/browse/ZF-2910 - I found the same function > in ViewRender.php. Thought it looked filmiar. > > I would, could, use the active module directory before the dispatch, but I > didnt see how this was posible.
It's not possible, because no routing has occured yet, and thus there *isn't* a current module. > However, I could get the information in the action controller - which works > for me. > > Terre > > -----Original Message----- > From: Matthew Weier O'Phinney [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 18, 2008 1:26 PM > To: [email protected] > Subject: Re: [fw-general] Re: [fw-mvc] Get module directory? > > -- Terre Porter <[EMAIL PROTECTED]> wrote (on Tuesday, 18 March > 2008, 12:57 PM -0400): > > A couple thoughts, > > > > 1. the request object does not appear to be available until after a > > $front_controller->dispatch() call > > > > 2. there is a function that returns the controllers directory > > $front_controller->getControllerDirectory($modulename optional) > > > > However, neither is available (in my code) until after the dispatch > > call. It then becomes accessable in the IndexController functions. > > Regarding (2): it will work when: > > a) you've setup your controller directories already > b) you provide the name of a module to the method. > > It doesn't require that the dispatch is made. > > However, (1) makes sense: you can't know what the current module is without > already being in the dispatch loop. The current module is the module in > which the currently executing controller lives -- whether this was the > requested controller, or one to which we've forwarded, or one which we've > invoked using the action() view helper. > > A getModuleDirectory() or similar method would simply return null or false > if there is no request, or no module set in the request object. > > > > > Something like this ... > > > > define('APPDIR', realpath(dirname(__FILE__).'/../').'/application'); > > > > $controller = Zend_Controller_Front::getInstance(); > > $controller->addModuleDirectory(APPDIR.'/modules'); > > $controller->setParam('noViewRenderer', true); > > $controller->throwExceptions(true); > > $controller->dispatch(); > > > > The modules directory contains: > > news > > -- controllers > > --- IndexController (news_index) > > default > > -- controllers > > --- IndexController (index) > > admin > > -- controllers > > --- IndexController (admin_index) > > > > Then in the IndexController.. > > > > $cDir = > > $this->getFrontController()->getControllerDirectory($this->_getParam(' > > module > > ')); > > > > $cDir equals: > > > > Testsite/ > > string(54) "/home/tbnlogin/application/modules/default/controllers" > > > > Testsite/news > > string(51) "/home/tbnlogin/application/modules/news/controllers" > > > > Testsite/admin > > string(51) "/home/tbnlogin/application/modules/admin/controllers" > > > > This was the only way I could find to provide me with the current > > module directory. > > > > I can now trim off the "controller" directory name > > $this->getFrontController()->getModuleControllerDirectoryName() and > > replace it with templates or some other directory to be contained > > under the module directory. > > > > In my case the plan is to pass the directory to a custom smarty/view > > to allow for a global templates directory and a module specific directory. > > > > Or at least thats the plan... > > > > Terre > > > > -----Original Message----- > > From: Jurriën Stutterheim [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, March 18, 2008 10:28 AM > > To: fw-general List > > Subject: [fw-general] Re: [fw-mvc] Get module directory? > > > > Here you go :-) http://framework.zend.com/issues/browse/ZF-2910 > > > > On Mar 18, 2008, at 2:28 PM, Matthew Weier O'Phinney wrote: > > > > > -- Jurriën Stutterheim <[EMAIL PROTECTED]> wrote (on Tuesday, > > > 18 March 2008, 01:58 PM +0100): > > >> Getting the module directory can be used for access to the :module/ > > >> models directory, or custom directories inside the module directory. > > >> E.g. > > >> :module/forms , :module/config (for module specific configs) > > >> > > >> Of course it's easy to do dirname($controllerDirectory), but it > > >> would be more convenient to have the module directory available > > >> from a method inside the frontcontroller. > > >> > > >> Suggestion for the method signature in the front controller: > > >> > > >> public function getModuleDirectory($module = null); > > >> > > >> It returns the module directory for the current module, unless > > >> $module is specified. In that case it would return the module > > >> directory for the specified $module. > > > > > > > > > That makes sense -- and particularly in light of the proposed > > > ModelLoader action helper. Cut and paste that into an issue for the > > > issue tracker, please. :-) > > > > > > > > >> Op Di, maart 18, 2008 13:19 schreef Matthew Weier O'Phinney: > > >>> -- thurting <[EMAIL PROTECTED]> wrote (on Monday, 17 March > > >>> 2008, > > >>> 11:01 PM -0700): > > >>> > > >>>> Is the only way to quickly get the current module directory > > >>>> through ViewRenderer::getModuleDirectory()? I see why it's > > >>>> there, but it feels like a strange place for it. > > >>> > > >>> That's actually a convenience method for the following, > > >>> simplified, > > >>> code: > > >>> > > >>> > > >>> $front = Zend_Controller_Front::getInstance(); > > >>> $request = $front->getRequest(); > > >>> $dir = $front->getControllerDirectory($request->getModuleName()); > > >>> > > >>> > > >>> The ViewRenderer needs to determine the current module directory > > >>> dynamically in order to set view script paths. No other shipped > > >>> components need such functionality, and so it's self-contained in > > >>> the ViewRenderer. > > >>> > > >>> > > >>> What do you need this functionality for in a more general sense? > > >>> > > >>> > > >>> -- > > >>> Matthew Weier O'Phinney > > >>> PHP Developer | [EMAIL PROTECTED] > > >>> Zend - The PHP Company | http://www.zend.com/ > > >>> > > >>> > > >>> > > >> > > >> > > > > > > -- > > > Matthew Weier O'Phinney > > > PHP Developer | [EMAIL PROTECTED] > > > Zend - The PHP Company | http://www.zend.com/ > > > > > > > > > > > > -- > Matthew Weier O'Phinney > PHP Developer | [EMAIL PROTECTED] > Zend - The PHP Company | http://www.zend.com/ > -- Matthew Weier O'Phinney PHP Developer | [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/
