2012-09-28 3 views
4

라벨 데코레이터에 문제가 있습니다. 내가 폼을 생성 할 때이 같은 일이 :Zend_Form 라벨 데코레이터

<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"> 

을하지만 필요

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

내 코드 :

$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); 

그리고 내 두 번째 질문 할 수있는 내가 체크 박스를 넣어하는 방법이다 내부 라벨? 나는이 같은 일을 오전 경우 :

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

하지만이 필요합니다 :

$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); 

을 내가 가진

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

어떤 아이디어?

감사

+0

두 가지 질문이있는 경우 두 가지를 물어보십시오. 그것들을 하나로 모으는 것은 약간 혼란 스럽습니다. – vascowhite

답변

6

당신이 당신의 요소

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

이 필요하지 않은 '태그'옵션을 구축 할 부분입니다. 그것을 다음으로 변경하십시오 :

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

두 번째 질문에 대해서는 사용자 정의 요소를 작성해야합니다. 또는 뷰 스크립트를 사용하여 원하는대로 요소의 각 부분을 렌더링 할 수 있습니다.

+0

도움 주셔서 감사합니다. 사용자 정의 데코레이터 클래스를 빌드하려고합니다. 내 코드는 다음과 같습니다. –

2

두 번째 쿼리에 대한 답은 라벨 데코레이터에서 IMPLICIT_APPEND 게재 위치를 사용하는 것입니다.

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