зарегистрировать вспомогательный путь просмотра в ZF2

Я перехожу с Zend Framework 1.12 на 2.0. До сих пор я научился регистрировать отдельные пользовательские помощники представления. Можно ли также зарегистрировать путь для (несколько) помощников представления?

В ZF1 я добился этого, поместив в свой application.ini следующее:

resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/views/helpers"

В результате чего:

$this->myHelper1 (и ... 2, ... 3 и т. д.)

будет автоматически загружаться:

MyApp/module/Application/src/Application/View/Helper/MyHelper1.php

Как я могу добиться чего-то подобного в ZF2?


person tihe    schedule 13.12.2012    source источник
comment
Так в чем собственно вопрос?   -  person akond    schedule 13.12.2012


Ответы (1)


Вам нужно зарегистрировать все ваши пользовательские помощники в вашей конфигурации следующим образом:

'view_helpers' => array(
    'invokables' => array(
        'myHelper1' => 'Application\View\Helper\MyHelper1',
        'myHelper2' => 'Application\View\Helper\MyHelper2',
    ),  
),

Поскольку все вызовы помощников исходят из магического метода Zend\View\Renderer\PhpRenderer __call(), я думаю, что можно зарегистрировать путь, расширив исходный PhpRenderer и перезаписав методы plugin() или __call().

Но прописывать хелперов по пути не рекомендуется. ZF2 — это инфраструктура на основе служб, все, включая помощники/плагины/контроллеры, должны быть предварительно установленными службами, которые необходимо определить в конфигурации, это хорошо для производительности и безопасности.

person AlloVince    schedule 14.12.2012
comment
Спасибо, но это то, что я уже знаю. Однако я бы предпочел зарегистрировать только путь, а не отдельных помощников. У вас есть идеи, возможно ли это? - person tihe; 14.12.2012
comment
все хелперы исходят из волшебного метода Zend\View\Renderer\PhpRenderer __call(), я думаю, что можно зарегистрировать путь, расширив исходный PhpRenderer и перезаписав методы plugin() или __call(). Но это действительно не рекомендуется. ZF2 - это фреймворк на основе служб, все, включая помощники/плагины/контроллеры, должно быть предварительно установленными службами, которые необходимо определить в конфигурации, это хорошо для производительности и безопасности. - person AlloVince; 14.12.2012
comment
хорошо, это приемлемый компромисс: неудобство для производительности и безопасности. Если вы включите свой комментарий в свой ответ, я приму его и проголосую за него. - person tihe; 14.12.2012
comment
Добавил комментарий к моему ответу - person AlloVince; 14.12.2012