Специальные стили / скрипты модуля начальной загрузки в Zend Framework - PullRequest
7 голосов
/ 01 апреля 2012

Я пытаюсь загрузить определенные стили / ресурсы скрипта для определенного модуля в моем приложении.

Вот моя структура приложения:

-application
  -configs
  -controllers
  -forms
  -layouts
  -models
  -modules
    -admin
      -configs
      -controllers
      -models
      -views
      -Bootstrap.php
  -views
  -Bootstrap.php

Проблема, с которой я столкнулся:стили и сценарии, которые я загружаю через headLink() и headScript в /application/modules/admin/Bootstrap.php, также загружаются в мой контроллер / действия, которые не в модуле admin.Вот мои Bootstrap.php

/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');
}

Я вижу, как или, может быть, почему это происходит: потому что я получаю представление из основного загрузочного пакета (?).У меня вопрос: как загрузить специфичные для модуля таблицы стилей и / или файлы сценариев?

Я прошу прощения, если это дублирующий вопрос, я искал различные формулировки названия вопроса и ничего не нашелубедительно.

Спасибо, Кен

Ответы [ 3 ]

4 голосов
/ 01 апреля 2012

Невозможно определить имя модуля во время начальной загрузки.Только после routeShutdown вы узнаете о названии модуля.Если вы используете макет, откройте файл application.ini

resources.layout.pluginClass = "My_Layout_Controller_Plugin_Layout"

внутри

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
}
}
}
1 голос
/ 01 апреля 2012

Bootstraps для всех модулей, выполняемых при каждом запросе.

Я могу предложить зарегистрировать плагин фронт-контроллера из bootstrap и выполнить вашу условную магию в preDispatch ().

0 голосов
/ 31 мая 2012

если вы используете макет, проще добавить что-то вроде следующего в верхнюю часть страницы макета для определенного модуля:

$this->headLink()->appendStylesheet('/styles/admin/styles_admin.css');
$this->headScript()->appendFile('/scripts/admin/scripts_admin.js');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...