I am trying to load specific styles/script resources for a specific module within my application.
Here is my application structure:
-application
-configs
-controllers
-forms
-layouts
-models
-modules
-admin
-configs
-controllers
-models
-views
-Bootstrap.php
-views
-Bootstrap.php
The problem I'm having is: the styles and scripts I am loading through headLink()
and headScript
in /application/modules/admin/Bootstrap.php
are also being loaded in my controller/actions that are not in the admin
module. Here are my Bootstrap.php
's
/application/Bootstrap.php
:
protected function _initDoctype()
{
$this->_logger->info('Bootstrap ' . __METHOD__);
//init the view
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
//Set title and separator
$view->headTitle('Sunny Rose Photography')
->setSeparator(' | ');
//Load global stylesheets
$view->headLink()->appendStylesheet('/styles/styles_main.css')
->headlink()->appendStylesheet('/scripts/jquery-ui-1.8.17/themes/base/jquery-ui.css');
//Load Scripts
$view->headScript()->prependFile('/scripts/jquery-1.7.1/jquery-1.7.1.js')
->headScript()->appendFile('/scripts/jquery-ui-1.8.17/ui/minified/jquery-ui.min.js')
->headScript()->appendFile('/scripts/gallery.js')
->headScript()->appendFile('/scripts/scripts_main.js');
}
/application/modules/admin/Bootstrap.php
:
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->headLink()->appendStylesheet('/styles/admin/styles_admin.css');
$view->headScript()->appendFile('/scripts/admin/scripts_admin.js');
}
I can see how or maybe why it's doing it: because I'm getting the view from the main bootsrap(?). My question is, how does one load module specific stylesheets and/or script files?
I apologize if this is a duplicate question, i searched for various wordings of the title of the question and I didn't find anything conclusive.
Thanks, Ken
I am trying to load specific styles/script resources for a specific module within my application.
Here is my application structure:
-application
-configs
-controllers
-forms
-layouts
-models
-modules
-admin
-configs
-controllers
-models
-views
-Bootstrap.php
-views
-Bootstrap.php
The problem I'm having is: the styles and scripts I am loading through headLink()
and headScript
in /application/modules/admin/Bootstrap.php
are also being loaded in my controller/actions that are not in the admin
module. Here are my Bootstrap.php
's
/application/Bootstrap.php
:
protected function _initDoctype()
{
$this->_logger->info('Bootstrap ' . __METHOD__);
//init the view
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
//Set title and separator
$view->headTitle('Sunny Rose Photography')
->setSeparator(' | ');
//Load global stylesheets
$view->headLink()->appendStylesheet('/styles/styles_main.css')
->headlink()->appendStylesheet('/scripts/jquery-ui-1.8.17/themes/base/jquery-ui.css');
//Load Scripts
$view->headScript()->prependFile('/scripts/jquery-1.7.1/jquery-1.7.1.js')
->headScript()->appendFile('/scripts/jquery-ui-1.8.17/ui/minified/jquery-ui.min.js')
->headScript()->appendFile('/scripts/gallery.js')
->headScript()->appendFile('/scripts/scripts_main.js');
}
/application/modules/admin/Bootstrap.php
:
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->headLink()->appendStylesheet('/styles/admin/styles_admin.css');
$view->headScript()->appendFile('/scripts/admin/scripts_admin.js');
}
I can see how or maybe why it's doing it: because I'm getting the view from the main bootsrap(?). My question is, how does one load module specific stylesheets and/or script files?
I apologize if this is a duplicate question, i searched for various wordings of the title of the question and I didn't find anything conclusive.
Thanks, Ken
Share Improve this question asked Apr 1, 2012 at 1:42 KenKen 5486 silver badges19 bronze badges3 Answers
Reset to default 4Its not possible to determine name of module at bootstrap time . Only after routeShutdown you will e to know about module name . If you are using layout then open application.ini
resources.layout.pluginClass = "My_Layout_Controller_Plugin_Layout"
inside
class My_Layout_Controller_Plugin_Layout extends Zend_Layout_Controller_Plugin_Layout
{
public function routeShutdown($request)
{
$moduleName = $request->getModuleName();
if($moduleName == 'admin')
{
// load css , js for this specific module
}
}
}
Bootstraps for all modules being executed on every request.
I can suggest registering front controller plugin from bootstrap and do your conditional magic on preDispatch().
if you are using a layout, an easier way is to add something like the following to the top of your layout page for a particular module:
$this->headLink()->appendStylesheet('/styles/admin/styles_admin.css'); $this->headScript()->appendFile('/scripts/admin/scripts_admin.js');