2011-09-13 91 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" 
     ) 
    ); 
    } 
}