2013-01-11 74 views
0

我在整個表單上都有Zend_Form_Decorator_HtmlTag。我想獲得的是這樣的:帶有HtmlTag裝飾器的Zend_Form只在某些元素上

<div class="form-elements"> 
    <div> 
     <label>blah</label> 
     <input type="text" /> 
    </div> 

    <div> 
     <label>blah 2</label> 
     <input type="checkbox" /> 
    </div> 
</div> 

<div class="form-buttons"> 
    <input type="submit" /> 
</div> 

如何獲得唯一的內部HtmlTag(輸入這裏)的某些元素,其他等元素標籤裏面?我現在有很多表單,所以如果只能修改我的基本表單類,那就太好了。

回答

1

此方法添加到你的鹼形式類:

public function loadDefaultDecorators() 
{ 
    $elementsToGroup = array(); 
    foreach ($this->getElements() as $element) { 
     if ($element->getType() != 'Zend_Form_Element_Submit') { 
      $elementsToGroup[] = $element; 
     } 
    } 
    if ($elementsToGroup) { 
     $this->addDisplayGroup($elementsToGroup, 'form-elements', array(
      'order' => 0, 
      'decorators' => array(
       'FormElements', 
       array('HtmlTag', array('tag'=>'div', 'class' => 'form-elements')) 
      ) 
     )); 
    } 

    parent::loadDefaultDecorators(); 
} 

遍歷所有形式的元件,並增加了任何不到顯示器組,然後將其添加到形式與一個按鈕'div'裝飾器覆蓋默認的字段集。 「訂單」參數確保元素將保留在表單的開頭。

按鈕周圍的div可以用按鈕本身上的普通HtmlTag裝飾器完成。

如果您希望使用CSS而不是使用CSS,可能值得一看,因爲如果您希望將顯示組用於他們的目標,此方法可能會在將來導致您一些問題。