blu*_*iel 14 php zend-framework zend-form
我正在寻找一些简单的代码,让我将以下html添加到我的zend表单中:
<div id="wmd-button-bar" class="wmd-panel"></div>
多数民众赞成,它需要高于我在表格中的'方法'元素,但就是这样.对于这样一个简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators).
jah*_*jah 28
我现在能想到的唯一方法是在表单中添加一个虚拟元素,并删除除"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();
Run Code Online (Sandbox Code Playgroud)
请注意,您要阻止对元素进行任何验证.这只是一种方式 - 可能还有其他方式.
输出:
<div id="wmd-button-bar" class="wmd-panel"></div>
Run Code Online (Sandbox Code Playgroud)
有一篇很好的文章描述了装饰者.
您可以创建自己的视图帮助程序库 - 应用程序>视图>帮助程序> PlainTextElemet.php
在库文件夹中创建一个文件夹,其名称为App,因此名称为View的文件夹在View中创建帮助文件夹,因此在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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在上面的libray中创建一个类App> Form> Element> PlainText.php
并将下面的代码放在这个类中
class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {
public $helper='PlainTextElement';
public function isValid($value){
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在表单中创建自己喜欢的每个HTML代码:
$someValue = '<div id="wmd-button-bar" class="wmd-panel"></div>';
$this->addElement(new App_Form_Element_PlainText('pliantext1', array(
'value'=>$someValue,
)));
Run Code Online (Sandbox Code Playgroud)
不要忘记在你的application.ini中添加fllowing lines:
autoloaderNamespaces.app = "App_"
resources.view.helperPath.App_View_Helper="App/View/Helper"
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以尝试这种方式,没有配置,只有一个扩展类引用:http://www.zfsnippets.com/snippets/view/id/50
<?php
/**
* Form note element
*
* @author Ruslan Zavackiy <ruslan.zavackiy@gmail.com>
* @package elements
*/
/**
* Loads helper Zend_View_Helper_FormNote
*/
class Custom_Form_Element_Note extends Zend_Form_Element_Xhtml
{
public $helper = 'formNote';
}
?>
Run Code Online (Sandbox Code Playgroud)
然后
$companies->addElement('note', 'companyNote', array(
'value' => '<a href="javascript:;" id="addCompany">Add Company</a>'
));
Run Code Online (Sandbox Code Playgroud)