2010-11-08 10 views
1

Je suis en train de créer un formulaire avec zend_form pour ajouter une page à un site web. Ce formulaire est pour un CMS.Zend_Form: Comment ajouter HTML personnalisé

Voici le code:

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'); 
} 

Maintenant, je veux passer le composant avancé avec jQuery. Mais pour que cela fonctionne, j'ai besoin d'un lien.

Donc, ma question est, y at-il quelqu'un qui sait comment faire cela? Ou même mieux quelqu'un a-t-il un élément de formulaire personnalisé qui peut ajouter tous les types de html?

Merci,

Ivo Trompert

Répondre

1

Vous pouvez ajouter du code HTML à Zend_Form de plusieurs façons. Je vois que vous avez déjà utilisé des décorateurs et HtmlTag, c'est bien. Avez-vous aussi vu DivTag, Label et mon préféré, 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')), 

)); L'utilisation d'une combinaison d'entre eux devrait vous permettre d'ajouter du HTML de base à votre formulaire et d'ajouter des div, des classes et des IDs. Zend Form Elements

3

Si votre script jquery avancé est lié à un élément particulier - vous pouvez décorer avec ViewScript. Cela vous permet d'appliquer n'importe quel HTML à l'élément courant.