Я ищу простой бит кода, который позволит мне добавить следующий HTML в свою форму зенда:
<div id="wmd-button-bar" class="wmd-panel"></div>
Вот именно это должно быть выше моего элемента 'метода' в форме, но вот именно. Для такого простого действия я не могу найти методы, которые не вовлекают меня изучающий аэрокосмические исследования (т.е. Декораторы Зенда).
На данный момент я могу придумать только один способ - добавить в форму фиктивный элемент и удалить все декораторы, кроме «HtmlTag» с атрибутами, которые вы указано в вашем вопросе. Удаление декораторов означает, что фактический элемент не будет отображаться - будет отображаться только декоратор HtmlTag.
Итак, если ваша форма - $ form:
$form->addElement(
'hidden',
'dummy',
array(
'required' => false,
'ignore' => true,
'autoInsertNotEmptyValidator' => false,
'decorators' => array(
array(
'HtmlTag', array(
'tag' => 'div',
'id' => 'wmd-button-bar',
'class' => 'wmd-panel'
)
)
)
)
);
$form->dummy->clearValidators();
Обратите внимание, что вы хотите предотвратить любую проверку элемента. Это только один способ - вероятно, есть и другие.
Вывод:
<div id="wmd-button-bar" class="wmd-panel"></div>
Есть хорошая статья с описанием декораторов .
Вы можете создать свой собственный помощник представления libraray--App>View>Helper>PlainTextElemet.php
Создайте папку в папке библиотеки с именем App и папку с именем View, в View создайте папку Helper, в папке Helper создайте класс с именем PlainTextElement
class App_View_Helper_PlainTextElement extends Zend_View_Helper_FormElement {
public function PlainTextElement($name, $value = null, $attribs = null) {
$info = $this->_getInfo($name, $value, $attribs);
extract($info); // name, value, attribs, options, listsep, disable
if (null === $value) {$value = $name;}
return $value;
}
}
Затем в библиотеке так же создайте класс App>Form>Element>PlainText.php
И поместите в этот класс следующий код
class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {
public $helper='PlainTextElement';
public function isValid($value){
return true;
}
}
Теперь в вашей форме вы можете создавать любой html код, который вам нравится:
$someValue = '<div id="wmd-button-bar" class="wmd-panel"></div>';
$this->addElement(new App_Form_Element_PlainText('pliantext1', array(
'value'=>$someValue,
)));
Не забудьте в application.ini добавить следующие строки:
autoloaderNamespaces.app = "App_"
resources.view.helperPath.App_View_Helper="App/View/Helper"
Поместите его в сценарий просмотра ...
<!-- /application/views/scripts/myController/myAction.phtml -->
<div id="wmd-button-bar" class="wmd-panel"></div>
<?php echo $this->form ;?>
Вы должны добавить декоратор .
Может оказаться полезным любой декоратор разметки .
Дополнительную информацию о декораторах см .: http://www.slideshare.net/weierophinney/leveraging-zendform-decorators