Zend_Form Label Designer

I have a problem with the label decorator. When I create the form, I have something like this:

<label id="user_email-label"><label for="user_email" class="required">e-mail</label> </label> <input type="text" name="user_email" id="user_email" value="" class="span4"> 

but I need:

 <label for="user_email" class="required">e-mail</label> <input type="text" name="user_email" id="user_email" value="" class="span4"> 

My code is:

 $oText = new Zend_Form_Element_Text('user_email'); $oText->clearDecorators(); $oText->setLabel($oTranslate->translate('e-mail')); $oText->setAttrib('class','span4'); $oText->setRequired(true); $oText->addValidator('NotEmpty', true); $oText->addValidator('StringLength', true, array('max' => 200)); $oText->addValidator('EmailAddress', true); $oText->addDecorator('ViewHelper'); $oText->addDecorator('Errors'); $oText->addDecorator('Label',array('tag'=>'label', 'placement' => 'prepend')); $oText->setFilters(array('StringToLower','StringTrim')); $this->addElement($oText); 

And my second question is: how can I check the box inside the label? When I do something like this:

  $oCheckbox = new Zend_Form_Element_Checkbox('remember_me'); $oCheckbox->setLabel($oTranslate->translate('remember me')); $oCheckbox->setChecked(true); $oCheckbox->addDecorator('HtmlTag',array('tag'=>'label','class'=>'checkbox muted')); $oCheckbox->removeDecorator('DtDdWrapper'); $oCheckbox->addDecorator('Label',array('tag'=>'label')); $this->addElement($oCheckbox); 

I have:

 <label class="checkbox muted"> <input type="hidden" name="remember_me" value="0"><input type="checkbox" name="remember_me" id="remember_me" value="1" checked="checked"></label> <label id="remember_me-label"><label for="remember_me" class="optional">remember me</label></label> 

but I need:

 <label class="checkbox muted"> <input type="hidden" name="remember_me" value="0"><input type="checkbox" name="remember_me" id="remember_me" value="1" checked="checked"> remember me</label> 

Any ideas?

Hello

+4
source share
2 answers

The part where you create your element, the tag parameter

 $oText->addDecorator('Label',array('tag'=>'label', 'placement' => 'prepend'));` 

not required. Change it to:

 $oText->addDecorator('Label',array('placement' => 'prepend')); 

Regarding the second question, I think you will need to write your custom element to achieve this. In addition, you can use the script view to render each part of the element as you wish.

+6
source

The answer to the second request is to use the location IMPLICIT_APPEND on the shortcut decoder.

  $oCheckbox->addDecorator('Label',array('placement' => 'IMPLICIT_APPEND')); 
+2
source

Source: https://habr.com/ru/post/1436828/


All Articles