2010-11-08 101 views
1

我是bussy用zend_form創建一個表單來添加頁面到網站。此表單適用於CMS。Zend_Form:如何添加自定義的HTML

這是代碼:

public function init() 
{ 
     // display errors on top 
     $this->setDecorators(array(
      array('FormErrors', array('markupElementLabelEnd' =>'', 'markupElementLabelStart' =>'')), 
      'FormElements', 
      array('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')), 
      'Form' 
     )); 

     // Set standard properties 
     $this->setName('Admin_Form_Addpage') 
      ->setAction(""); 


     // Textbox for the page title. The textbox is required 
     $title = new Zend_Form_Element_Text('title'); 
     $title->setLabel('Title') 
       ->setAttrib('placeholder', 'Title') 
       ->setAttrib('autofocus', "") 
       ->setRequired(); 

     // WYSIWYG editor 
     $wysiwyg = new Zend_Form_Element_Textarea('pagecontent'); 
     $wysiwyg->setLabel('Content') 
       ->setRequired(); 

     // Advanced CSS 
     $css = new Zend_Form_Element_Textarea('css'); 
     $css->setLabel('CSS') 
      ->setAttrib('rows', 10) 
      ->setAttrib('cols', 60); 

     // Advanced JS 
     $js = new Zend_Form_Element_Textarea('js'); 
     $js->setLabel('Java Script') 
      ->setAttrib('rows', 10) 
      ->setAttrib('cols', 60); 

     // Build form 
     $this->addElement($title) 
      ->addElement($wysiwyg) 


      // Add submit button 
      ->addElement('submit', 'add', array('label' => 'Add')) 
      ->addElement($css) 
      ->addElement($js) 
      ->addDisplayGroup(array('css','js'), 'advanced',array('disableLoadDefaultDecorators' => true)); 

     $advanced = $this->getDisplayGroup('advanced'); 
     $advanced->setDecorators(array(
      'FormElements', 
      array('HtmlTag', array('tag' => 'div', 'id' => 'div_advanced')) 
     )); 

     /** 
     * Remove Errors decorator from all elements 
     * so that they don't also display them 
     */ 
     foreach ($this->getElements() as $element) { 
      $element->removeDecorator('Errors'); 
} 

現在我想切換使用jQuery的先進組件。但爲了這個工作,我需要一個鏈接。

所以我的問題是,有沒有人知道如何做到這一點?或者甚至更好有一個自定義窗體元素,可以添加所有類型的HTML?

謝謝

伊沃Trompert

回答

1

您可以通過幾種方式將HTML添加到Zend_Form中。我看到你已經使用裝飾器和HtmlTag,這很好。你有沒有看過DivTag,Label和我的個人喜好,Description?

$this->addDecorators(array(
array('ViewHelper'), 
array('Errors'), 
array('Description', array('tag' => 'p', 'class' => 'description')), 
array('HtmlTag', array('tag' => 'dd')), 
array('Label', array('tag' => 'dt')), 

));

使用它們的組合應該允許您將基本HTML添加到您的表單並添加div,類和ID。 Zend Form Elements

3

如果您先進的jQuery腳本相關的一些特定元素 - 你可以用ViewScript裝飾。它允許你應用任何HTML到當前元素。