2011-09-13 130 views
2

我有一个使用视图zend的表单构建。我认为通过使用一个viewscript我会得到所有的dd和dt消除,并能够在窗体脚本文件(patientScriptForm.phtml)的形式使用我自己的HTML标记?Zend Form ViewScript摆脱dt和dd标签?

如何在表单脚本文件中只使用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')))); 

下面是我viewscript 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

请参阅http://stackoverflow.com/questions/838074/how-to-remove-dd-and-dt-html-elements-when-rendering-a-form-element-in-zf。 – Cymen

+0

+1给Cymen。具体来说,'HtmlTag'装饰器添加了dt和dd标签。你可以自定义这个装饰器来使用不同的标签,或者完全删除它。 – asgeo1

+0

嗨Cymen,我该如何去除它与'HtmlTag'一起?我已经用HtmlTag装饰器进行了一些试验,结果不成功.. – coder3

回答

3

问题是在使用表单元素本身的表单工作的ViewScript装饰器时,你的元素都有自己的默认装饰器方案。

在视图脚本一个简单的解决办法是

<?php echo $this->element->age->setDecorators(array('ViewHelper')) ?> 
+0

感谢您的回复我把它放在了我的视图脚本文件中,并且得到了这个错误: 警告:ViewScript装饰器没有在/ Users/c33/zend中注册视图脚本2041行上的-dev/library/Zend/Form/Element.php – coder3

+0

coder3哎呀,本来是'ViewHelper'。修正了我的答案 – Phil

+0

谢谢!哇,我不相信多久才找到这个答案。我一直在网上环视两天。再次感谢!! – coder3

0

如果你的表格有太多的元素追加

->setDecorators(array("ViewHelper")) 

到每年年底在您看来echo语句脚本不看起来如此引人注目,您还可以执行以下操作,它与上述调用表单中的每个元素的效果相同:

class Application_Form_Login extends Zend_Form { 
    public function init() { 
    // ... 

    $this->setElementDecorators(
     array(
      "ViewHelper", 
      "Errors" 
     ) 
    ); 
    } 
}