我使用了一个使用viewcript的zend表单构建。我认为通过使用viewscript我会得到所有的dd和dt消除,并能够在表单脚本文件(patientScriptForm.phtml)的形式上使用我自己的html标签?
如何在表单脚本文件中仅使用div标签而不是自动生成的dt和dd标签?谢谢!
我有一个非常基本的表单,代码如下:
$age = new Zend_Form_Element_Text('age'); $age->setLabel('age');
$submit = new Zend_Form_Element_Submit('submit'); $submit->setValue($submit);
$this->addElement($age)->addElement($submit);
$this->setDecorators(array ( array ('ViewScript', array('viewScript' => 'patientScriptForm.phtml'))));
以下是我的观察记录patientScriptForm.phtml
<form action="<?php echo $this->escape($this->element->getAction()) ?>" method="<?php echo $this->escape($this->element->getMethod()) ?>">
<div>
<?php echo $this->element->age ?>
</div>
<div>
<?php echo $this->element->submit ?>
</div>
</form>
以下是浏览器输出:
<form action="" method="post">
<div>
<dt id="age-label">
<label for="age" class="optional">age</label>
</dt>
<dd id="age-element">
<input type="text" name="age" id="age" value="" />
</dd>
</div>
<div>
<dt id="submit-label">
</dt>
<dd id="submit-element">
<input type="submit" name="submit" id="submit" value="submit" />
</dd>
</div>
</form>
答案 0 :(得分:3)
问题在于,虽然表单的ViewScript
装饰器适用于表单元素本身,但每个元素都有自己的默认装饰器方案。
视图脚本中的简单解决方案可能是
<?php echo $this->element->age->setDecorators(array('ViewHelper')) ?>
答案 1 :(得分:0)
如果您的表单包含太多附加
的元素->setDecorators(array("ViewHelper"))
到视图脚本中每个echo语句的末尾看起来并不那么引人注目,您也可以执行以下操作,这与对表单中每个元素执行上述调用具有相同的效果:
class Application_Form_Login extends Zend_Form {
public function init() {
// ...
$this->setElementDecorators(
array(
"ViewHelper",
"Errors"
)
);
}
}