添加一些 html 到 Zend Forms
2022-08-31 00:21:06
我正在寻找一个简单的代码,可以让我将以下html添加到我的zend表单中:
<div id="wmd-button-bar" class="wmd-panel"></div>
就是这样,它需要在形式上高于我的“方法”元素,但仅此而已。对于如此简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators)。
我正在寻找一个简单的代码,可以让我将以下html添加到我的zend表单中:
<div id="wmd-button-bar" class="wmd-panel"></div>
就是这样,它需要在形式上高于我的“方法”元素,但仅此而已。对于如此简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators)。
我目前能想到的唯一方法是向表单添加一个虚拟元素,并删除除具有您在问题中指定的属性的“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 的文件夹,以便名称为“查看”的文件夹,以便在“视图”中创建帮助程序文件夹,以便在“帮助程序”文件夹中创建一个名称与以下内容相同的纯文本元素的类
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;
}
}
然后在上面的libray中创建一个类App>Form>Element>PlainText.php
并将 folowing 代码放在这个类中
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,
)));
不要忘记在您的应用程序中.ini也添加翻滚行:
autoloaderNamespaces.app = "App_"
resources.view.helperPath.App_View_Helper="App/View/Helper"