В настоящее время у меня есть приложение Zend Framework с несколькими модулями. Каждый модуль должен использовать один и тот же Zend_Form_Decorator_ViewScript , расположенный в папке default
modules /views/scripts
.
Без каких-либо изменений модули по умолчанию ищут только сценарии просмотра декоратора форм в своей собственной папке /views/scripts
, расположенной под каждым модулем, поэтому, чтобы они загрузили их из папки default
modules, мне сначала нужно применить это внутри форма:
$view = new Zend_View();
$view->setScriptPath(APPLICATION_PATH . '/views/scripts');
$this->setView($view);
В этой же форме я создаю несколько Zend_Form_SubForm
s, для которых мне нужно снова применить тот же код. Если этого недостаточно, мне нужно применить этот путь к каждому отдельному элементу в каждой SubForm, а также к родительской форме. Кроме того, каждый элемент должен иметь свой ViewScript, определенный каждый раз как:
$username->setDecorators(array(array('ViewScript', array('viewScript' => '/formScripts/wizardElement.phtml'))));
Теперь, все это работает, если я определяю все это для каждого элемента / подчиненной формы / формы в одном и том же файле, но это просто кажется ненужной работой / кодом.
- Можно ли сначала упростить процесс
просто имея родительскую форму определить
scriptPath
для себя, его
элементы, его подчиненные формы и
элементы субформ?
- Могут ли для новых созданных элементов автоматически определяться
ViewScripts
, определенные для них, в зависимости от типа элемента (т. Е. Поле ввода, флажок, поле выбора, текстовое поле, кнопка и т. Д.)?
В настоящее время я расширяю свою форму непосредственно из значения по умолчанию Zend_Form
, у меня не будет проблем с созданием собственной абстрактной формы для расширения моих форм, но особенно с проблемами scriptPath
, я не совсем уверен как я должен подойти ко всей этой проблеме.
Применение:
$this->setSubFormDecorators(array(
'Form',
array('ViewScript', array('viewScript' => '/formScripts/wizardSubForm.phtml'))
));
перезаписывает все специфичные для элемента декораторы, которые я применял до этого.
Предложения