4

ラベルデコレータに問題があります。フォームを生成すると、次のようになります。

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

そして私の2番目の質問は、どうすればラベルの中にチェックボックスを入れることができるかということです。私がこのようなことをしているとき:

 $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"></label>
<label id="remember_me-label"><label for="remember_me" class="optional">remember me</label></label>

しかし、私は必要です:

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

何か案は?

よろしく

4

2 に答える 2

6

要素を構築する部分、「タグ」オプション

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

必要ありません。次のように変更します。

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

2番目の質問については、それを実現するためにカスタム要素を作成する必要があると思います。または、ビュースクリプトを使用して、要素の各部分を好きなようにレンダリングすることもできます。

于 2012-09-28T18:02:55.007 に答える
2

2番目のクエリに対する答えは、ラベルデコレータのIMPLICIT_APPEND配置を使用することです。

    $oCheckbox->addDecorator('Label',array('placement' => 'IMPLICIT_APPEND'));
于 2013-09-03T10:53:19.347 に答える