Создание собственного объекта View с Zend_Application

Предположим, что вам необходимо создать свой объект вида view в приложении Zend Framework. О том, как правильно это сделать, узнаете в этом уроке.

Создайте новый файл library/App/View.php:

class App_View extends Zend_View
{
    // custom methods here
}

Так же не забудьте добавить пространство имён App_ в application.ini:

autoloadernamespaces[] = "App_"

Всё, что нам необходимо сделать так это сообщить Zend_Application, о том, что у нас есть свой собственный класс. Это может быть реализовано двумя путями: непосредственно в Bootstrap.php или предварительно создав отдельный ресурс.

_initView() в Bootstrap.php

На первый взгляд тут всё довольно-таки просто. В application/Bootstrap.php, мы добавили наш собственный метод, который создаёт объект вида:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        $view = new App_View();

        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
        $viewRenderer->setView($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        return $view;
    }
}

Данный метод мы назвали _initView() для того, чтобы он заменил собой уже существующий метод. Однако такой способ приведёт к тому, что данные вида resources.что-то из application.ini будут полностью игнорироваться, так что введём несколько изменений:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        $resources = $this->getOption('resources');
        $options = array();
        if (isset($resources['view'])) {
            $options = $resources['view'];
        }
        $view = new App_View($options);

        if (isset($options['doctype'])) {
            $view->doctype()->setDoctype(strtoupper($options['doctype']));
            if (isset($options['charset']) && $view->doctype()->isHtml5()) {
                $view->headMeta()->setCharset($options['charset']);
            }
        }
        if (isset($options['contentType'])) {
            $view->headMeta()->appendHttpEquiv('Content-Type', $options['contentType']);
        }
        
        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
        $viewRenderer->setView($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        return $view;
    }

}

Данная версия функции принимает во внимание ресурсы из application.ini и очень похожа на встроенную функциональность, которую предоставляет Zend Framework.

Собственные ресурсы

Теперь самое время переопределить Zend_Application_Resource_View нашим ресурсам вида. Для этого создадим класс App_Resource_View и расположим его в library/App/Resource/View.php. Всё, что нам нужно, так это переопределить метод getView():

class App_Resource_View extends Zend_Application_Resource_View
{
    public function getView()
    {
        if (null === $this->_view) {
            $options = $this->getOptions();
            $this->_view = new App_View($options);

            if (isset($options['doctype'])) {
                $this->_view->doctype()->setDoctype(strtoupper($options['doctype']));
                if (isset($options['charset']) && $this->_view->doctype()->isHtml5()) {
                    $this->_view->headMeta()->setCharset($options['charset']);
                }
            }
            if (isset($options['contentType'])) {
                $this->_view->headMeta()->appendHttpEquiv('Content-Type', $options['contentType']);
            }
        }
        return $this->_view;
    }
}

Для того, чтобы заставить Zend_Application загрузить наш собственный ресурс просто добавьте данную строку application.ini:

pluginPaths.App_Resource = "App/Resource"

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/_PdpMtbMFto/lessons.php

Читать комменты и комментировать

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



Защитный код
Обновить

Создание собственного объекта View с Zend_Application | | 2012-06-19 12:07:38 | | Статьи Web-мастеру | | Предположим, что вам необходимо создать свой объект вида view в приложении Zend Framework. О том, как правильно это сделать, узнаете в этом уроке.Создайте новый файл library/App/View.php:class | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: