Search code examples
phpzend-frameworkzend-formzend-decorators

Zend Form Decorators add classes


I'm new to Zend, and beginner in php. I have a form generating several Elements. I have already add Decorators to have each of them in a div :

$element->addFilter('StringTrim')->addDecorators(array('clearfix'=>new Zend_Form_Decorator_HtmlTag(array('tag'=>'div','class'=>'clearfix'))));

My generated html looks like that :

    <div class="clearfix">
        <dt id="email-label"><label for="email" class="optional">Email</label></dt>
        <dd id="email-element">
        <input type="text" name="email" id="email" value="" class="text" maxlength="100">    
        </dd> 
    </div>

I want to add a class to the dd tag to have that :

    <div class="clearfix">
        <dt id="email-label"><label for="email" class="optional">Email</label></dt>
        <dd class="clearfix" id="email-element">
        <input type="text" name="email" id="email" value="" class="text" maxlength="100">    
        </dd> 
    </div>

EDIT :

/* ###################################  email                ################################### */
    $email          = new Zend_Form_Element_Text('email');
    $email          ->setLabel("Email");
    $email          ->setAttrib('class','text');
 // $email          ->setRequired(true);
    $email          ->addValidator('EmailAddress');
    $email          ->setFilters(array('StringTrim', 'StringToLower'));
    $email          ->addFilter('StringTrim')->addDecorators(array('clearfix'=>new Zend_Form_Decorator_HtmlTag(array('tag'=>'div','class'=>'clearfix'))));
    $email          ->addValidator('StringLength', false, array(0, 100));
    $email          ->setAttrib('maxlength', '100');
    $this           ->addElement($email);

Someone have an idea ? Thanks!


Solution

  • try this:

    $element = new Zend_Form_Element_Text('email'); 
    $element->addDecorators(array(array('HtmlTag',array('tag' => 'dd', 'class' => 'yourclass' )));