28 июля 2011 г.

Zend + action helpers + application.ini

Action helpers иногда бывают очень полезны. В частности как замена плагинов фронт-контроллера с возможностью доступа к экземпляру конкретного контроллера действия. Примеры конфигурирования оных я и приведу.


Сам хелпер

Copy Source | Copy HTML
  1. class My_Action_Helper_AuthInfo extends Zend_Controller_Action_Helper_Abstract
  2. {
  3.     public function init()
  4.     {
  5.         echo "Init helper";
  6.     }
  7. }



Подключение пути к своим хелперам

old way (bootstrap)
Copy Source | Copy HTML
  1. Zend_Controller_Action_HelperBroker::addPath( APPLICATION_PATH .'/controllers/helpers', 'My_Action_Helper' );
new way (application.ini)

Copy Source | Copy HTML
  1. resources.frontController.actionhelperpaths.My_Action_Helper = APPLICATION_PATH "/controllers/helpers"

Добавление хелпера в брокер 
(чтобы хуки с циклом диспетчеризации сработали хелперы нужно инстанцировать и добавить в брокер помощников на этапе инита приложения)

old way (для варианта с бутстрапом достаточно добавить следом ещё одну строчку)

Copy Source | Copy HTML
  1. Zend_Controller_Action_HelperBroker::getStaticHelper('AuthInfo');


new way (для варианта с добавлением хелперов через app.ini нужно добавить в бутсрап следующие строки)

Copy Source | Copy HTML
  1. $this->bootstrap('frontcontroller');
  2. Zend_Controller_Action_HelperBroker::getStaticHelper('AuthInfo');

ПыСы: Очень хотелось бы избавиться от "$this->bootstrap('frontcontroller');", но пока не нашёл как.  Обидно, что этот хук я нашёл методом научного тыка, а не из оф доки. Уже позже наткнулся на упоминание оного в блоге O'Phinney =(


Ссылки по теме:
http://zend-framework-community.634137.n4.nabble.com/question-about-resources-frontController-actionHelperPaths-in-application-ini-td3208490.html
http://zend-framework-community.634137.n4.nabble.com/Action-Helpers-Path-configuration-in-version-1-9-5-td788751.html

Комментариев нет: