В вашем действии контроллера:
$this
->getServiceLocator()
->get('viewhelpermanager')
->get('HeadScript')
->appendFile('/js/custom.js')
;
Вы могли бы сделать это проще, создав «invokable», «служба поиска осведомленный» контроллер плагин.
Вы можете сделать это в вашем модули конфигурационном файле:
...
'controller_plugins' => array(
'invokables' => array(
'Head' => 'Application\Controller\Plugin\Head',
)
),
...
Создание класса «Head» в module/Application/src/Application/Controller/Plugin/Head.php
, который реализует ServiceLocatorAwareInterface
и построить некоторые методы, такие как javaScript()
или styleSheet
, например, что просто захватить помощник вида и возврата это:
return $this
->getServiceLocator()
->getServiceLocator() // Main service Locator
->get('viewhelpermanager')
->get('HeadScript')
;
Тогда в контроллере это больше похоже:
$this->Head()->javaScript()->appendFile('/js/custom.js');
Вы могли бы получить такую же фантазию, сколько хотите. Возможно, даже стиль Magento с XML, управляющим макетом для каждого действия.
UPDATE
Выход в буфер, если вы используете ZF2 MVC. Таким образом, я нашел, что добавление скриптов и таблиц стилей на странице лучше всего сделать из файла шаблона, прикрепленного к вашей модели представления:
$this->headScript()->appendFile('/js/custom.js', 'text/javascript');
$this->headLink()->appendStylesheet('/css/custom.css');
Держите его из контроллера, так как это мнение Связанный.
Просмотреть помощник вида headScript() -> http://framework.zend.com/manual/2.1/en/modules/zend.view.helpers.html#headscript-helper – Crisp
Да, я видел это ... и я понимаю, как это работает в макете, но как насчет добавления скриптов или стилей в определенные виды? Есть ли способ, доступный в действии? Должен ли я просто повторить это в представлении? Документация не очень ясна. – aserwin
Да, помощник доступен в представлениях и макетах, я думаю, что единственным предостережением может быть то, что вам нужно использовать preend в представлениях, но ymmv. – Crisp