Zend Form ViewScript摆脱了dt和dd标签?

时间:2011-09-13 23:21:25

标签: php zend-framework zend-form

我使用了一个使用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>

2 个答案:

答案 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"
        )
     );
   }
}