我在我的项目中使用 Zend Framework。我想在我的表格中添加描述/注释,例如
fields marked by * are mandatory
但我没有找到如何向表单添加描述以及如何将其与装饰器一起使用。
任何帮助将不胜感激。谢谢。
我在我的项目中使用 Zend Framework。我想在我的表格中添加描述/注释,例如
fields marked by * are mandatory
但我没有找到如何向表单添加描述以及如何将其与装饰器一起使用。
任何帮助将不胜感激。谢谢。
有两种选择:
Zend_Form_Element
以创建自定义元素我会选择后者,因为将部分原始 html 代码添加到表单中非常常见,不仅在元素之前或之后,而且在它们之间。
你应该这样做:
class My_Form_Element_Raw extends Zend_Form_Element
{
protected $raw_html;
public function setRawHtml($value)
{
$this->raw_html = $value;
return $this;
}
public function getRawHtml()
{
return $this->raw_html;
}
public function render()
{
// you can use decorators here yourself if you want, or wrap html in container tags
return $this->raw_html;
}
}
$form = new Zend_Form();
// add elements
$form->addElement(
new My_Form_Element_Raw(
'my_raw_element',
array('raw_html' => '<p class="highlight">fields marked by * are mandatory</p>')
)
);
echo $form->render();
扩展时,Zend_Form_Element
您不需要覆盖setOption/s
,getOption/s
方法。Zend 在内部使用set*和get*和受保护的属性来检测在这种情况下的元素选项protected $raw_html;
,public function setRawHtml($value)
并且public function getRawHtml()
命名您的属性$raw_html
将分别接受 'raw_html' 和 'rawHtml' 两个选项
向表单添加额外文本的最简单方法是将适当的 html 添加到页面视图:
<div>
<h4>fields marked by * are mandatory</h>
<?php echo $this->form ?>
</div>
或者使用 viewScript 装饰器来控制整个表单体验:
<article class="login">
<form action="<?php echo $this->element->getAction() ?>"
method="<?php echo $this->element->getMethod() ?>">
<table>
<tr>
<th>Login</th>
</tr>
<tr>fields marked by * are mandatory</tr>
<tr>
<td><?php echo $this->element->name->renderViewHelper() ?></td>
</tr>
<tr>
<td><?php echo $this->element->password->renderViewHelper() ?></td>
</tr>
<tr>
<td><?php echo $this->element->submit ?></td>
</tr>
</table>
</form>
</article>
但是,您可以使用向表单添加描述,$form->setDescription()
然后您可以使用呈现该描述echo $this->form->getDescription()
。最好在元素级别使用这些方法以及 set 和 getTag() 而不是表单级别。
为了提供星号线索,我只使用 css:
dt label.required:before {
content: "* ";
color: #ff0000;
}
我敢肯定,如果需要,您可以仅使用 css 显示您想要的任何注释。
class FormDecorators {
public static $simpleElementDecorators = array(
array('ViewHelper'),
array('Label', array('tag' => 'span', 'escape' => false, 'requiredPrefix' => '<span class="required">* </span>')),
array('Description', array('tag' => 'div', 'class' => 'desc-item')),
array('Errors', array('class' => 'errors')),
array('HtmlTag', array('tag' => 'div', 'class' => 'form-item'))
);
}
这些是我通常使用的元素的装饰器,它们包含带 * 的前缀和描述装饰器。
然后使用代码:
$element->setDescription('fields marked by * are mandatory');
向一个元素添加描述,之后您可以将描述样式设置为出现在底部的某处,我希望这会有所帮助,祝您有美好的一天。