Zend_Form:如何添加自定义的HTML

问题描述:

我是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

您可以通过几种方式将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

如果您先进的jQuery脚本相关的一些特定元素 - 你可以用ViewScript装饰。它允许你应用任何HTML到当前元素。