Плагин автоподключения стилей и JS для Zend Framework

Standard

zend frameworkНаписал плагин для ZendFramework’a, который подключает стили и JavaScript’ы. Для плагина надо зарегистрировать в Zend_Registry два параметра:

pathStyle — путь к ZendFramework Jerseys стилям
pathJS — путь к JavaScript’ам

Плагин проверяет на существование файлы. Например мы обратились к странице fritool.ru/modules/controller/action/. Скрипт будет проверять следующие файлы на существование:

pathStyle/modules.css
pathStyle/modules/controller.css
pathStyle/modules/controller/action.css
pathJS/modules.js
pathJS/modules/controller.js
pathJS/modules/controller/action.js

Код плагина:

class Dev_Plugin_View extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $view = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view;

        wholesale nfl jerseys   $pathStyle = Zend_Registry::get('pathStyle');
        $pathJS    = Zend_Registry::get('pathJS');

        //----------------------------- Styles -----------------------------
    wholesale nba jerseys       $view->headLink()->appendStylesheet($pathStyle . 'site.css?');

   1.8.1    cheap nba jerseys          if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathStyle . $this->_request->module . '.css')) {
             Jakes  $view->headLink()->appendStylesheet($pathStyle  cheap nfl jerseys  . $this->_request->module . '.css');
        }
        if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathStyle . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . '.css')) {
            $view->headLink()->appendStylesheet($pathStyle . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . '.css');
        }
        if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathStyle . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . DIRECTORY_SEPARATOR . $this->_request->action . '.css')) {
    cheap nfl jerseys           $view->headLink()->appendStylesheet($pathStyle . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . DIRECTORY_SEPARATOR . $this->_request->action .  Basketball  '.css');
        }

       cheap nfl jerseys    //----------------------------- Scripts -----------------------------
        if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathJS . $this->_request->module  Подмена  . '.js')) {
            $view->headScript()->appendFile($pathJS . $this->_request->module . '.js');
        }
     cheap nfl jerseys      if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathJS . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . '.js')) {
          Determining     $view->headScript()->appendFile($pathJS . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . '.js');
        }
        if (file_exists($_SERVER['DOCUMENT_ROOT'] . $pathJS . $this->_request->module . DIRECTORY_SEPARATOR . $this->_request->controller . DIRECTORY_SEPARATOR . $this->_request->action . '.js')) {
            $view->headScript()->appendFile($pathJS . $this->_request->module  ЗАБЛОКИРОВАН!  . DIRECTORY_SEPARATOR . $this->_request->controller . DIRECTORY_SEPARATOR . $this->_request->action . '.js');
       wholesale nba jerseys    }
    }
}

Для того, чтобы nhà плагин заработал его надо зарегистрировать в приложении.
Код:

$frontController->registerPlugin(new Dev_Plugin_Main());

5 thoughts on “Плагин автоподключения стилей и JS для Zend Framework

  1. Zh0rzh

    А зачем нужно использовать Zend_Registry. Это крайне снижает переносимость приложений.

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

    $pluginMain = new Dev_Plugin_Main();
    $pluginMain->setPathStyle(‘…’);
    $pluginMain->setPathJS(‘…’);

    ?

  2. Aligan

    Вообще не вижу смысла в данном случае проверять на существавание файлы, другой дело если бы файлы загружались/удалялись динамически — скриптом, то тогда да смысл есть.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *