У меня есть несколько хелперов представлений, которые добавляют файлы JavaScript, когда они нужны (например, чтобы только формы использовали CKEditor и тому подобное). Моя структура каталогов (упрощенная, чтобы включать только соответствующие файлы) такова:
application
--forms
--Project
AddIssue.php
--modules
--default
--views
--helpers
JQueryUI.php
Wysiwyg.php
--project
--controllers
ProjectController.php
--views
--scripts
--project
version.phtml
issueadd.phtml
Что я хочу сделать:
- включить CKEditor в представление
project/project/issueadd
- включить пользовательский интерфейс jQuery в
project/project/version
Когда я нахожусь внутри скрипта представления, вызов <?php $this->jQueryUI(); ?>
работает как шарм, даже несмотря на то, что помощник находится в каталоге помощников модуля по умолчанию. Однако это не относится к контроллеру и форме.
В контроллере ProjectController.php
, versionAction()
пробовал вызывать:
$this->view->jQueryUI();
и эффект был исключением:
Сообщение: Плагин с именем «JQueryUI» не найден в реестре; используемые пути: Project_View_Helper_: C:/xampp/htdocs/bugraid/application/modules/project/views\helpers/ Zend_View_Helper_: Zend/View/Helper/
Точно так же в форме AddIssue.php
я пробовал это:
$this->getView()->wysiwyg();
и снова было исключение:
Сообщение: Плагин с именем «Wysiwyg» не найден в реестре; используемые пути: Project_View_Helper_: C:/xampp/htdocs/bugraid/application/modules/project/views\helpers/ Zend_View_Helper_: Zend/View/Helper/
Очевидно, что оба варианта будут работать, если мои помощники представления будут находиться в каталогах помощников модулей/контроллеров, из которых они вызываются, но, поскольку они используются во многих модулях, я бы хотел, чтобы они находились в каталоге помощников представления модуля по умолчанию. .
Итак, мои вопросы:
- Как мне получить доступ к этим помощникам представления из контроллера и формы?
- Есть ли более простой способ обойти это (кроме простого включения всех файлов javascript в макет)? Нравится создание плагина или помощника действий? (Я не делал этого раньше, так что я действительно не знаю, я только начинаю свое приключение с ZF).
jquery.js
,jqueryui.js
иui.css
в заголовок страницы, ничего особенного. Я использую его только на одной странице, где мне нужны перетаскиваемые элементы, и решил, что включать его на все страницы не имеет смысла. @Marcin: ваше понимание, как обычно, бесценно. Не могли бы вы опубликовать это как ответ? - person mingos   schedule 13.02.2011