2011-02-26 24 views
1

在我的形式,我需要這樣的:如何呈現Zend形式的一些HTML?

<li class ="af_title"><div>Contact form</div></li> 

我明白,如果我需要,例如文本字段 - 然後我剛剛創建Zend_Form_Element_Text,敷HtmlTag裝飾圍繞它 - 對嗎?

問題:

1)我怎麼會產生DIV表單元素,所以我可以環繞它的裝飾?

2)MMM。 - 如何將所述元素的內容設置爲「聯繫表單」?

謝謝:)

+0

哪裏「聯繫表」字符串從哪裏來? – Phil 2011-02-26 02:21:35

+0

它只是一個硬編碼標籤。 :)表單的名稱。 – Stann 2011-02-26 02:29:20

+0

我想我的問題是如何注入一些隨機的html到我的表單? – Stann 2011-02-26 02:50:37

回答

4

環繞div您的聯繫方式是內部<li class ="af_title">你可以做如下:

$yourForm = new YourForm(); 
$yourForm->addDecorator(array('div' => 'HtmlTag'), array('tag' => 'div')); 
$yourForm->addDecorator(array('li' => 'HtmlTag'), array('tag' => 'li', 'class' => 'af_title')); 

編輯:

我看到你說的div的表單元素。這樣的元素不存在,但你可以很容易地創建它。爲此,你需要兩樣東西:新的表單元素(即div元素),並會採取一代HTML的護理表單視圖助手。我允許自己準備這兩個元素的簡單例子,以顯示我的意思:

APPLICATION_PATH中的Div.php。 /形式/元素

class My_Form_Element_Div extends Zend_Form_Element { 
    /** 
    * Default form view helper to use for rendering 
    * @var string 
    */ 
    public $helper = 'formDiv'; 

    public function __construct($spec, $options = null) { 
     parent::__construct($spec, $options); 
     $this->removeDecorator('label'); 
     $this->removeDecorator('htmlTag'); 

    } 

} 

FormDiv.php在APPLICATION_PATH。 /視圖/傭工

class My_View_Helper_FormDiv extends Zend_View_Helper_FormElement { 


    public function formDiv($name, $value = null, $attribs = null) { 

     $class = ''; 

     if (isset($attribs['class'])) { 
      $class = 'class = "'. $attribs['class'] .'"'; 
     } 

     return "<li $class><div>$value</div></li>"; 
    } 

} 

到這一點,你可以在div表單元素只是添加到任何形式的元素在他們的init()方法如下:

$div = new My_Form_Element_Div('mydiv'); 
    $div->setValue('Contact form')->setAttrib('class', 'af_title'); 
    $this->addElement($div); 
+0

哇。棒極了。謝謝。 – Stann 2011-02-26 10:30:36

+0

@Andre。樂於幫助。 – Marcin 2011-02-26 10:52:21