Zend_Form と Decorators を使用してカスタム フォームを作成しようとしています。目的の html 形式は次のとおりです。
<form enctype="application/x-www-form-urlencoded" method="post" action="">
<div class="login_bx">
<div id="txtAccount-label" class="txt_field">
<label for="txtAccount" class="required">Account ID:</label>
</div>
<div class="inp_field">
<input type="text" name="txtAccount" id="txtAccount" value="" style="width:250px">
</div>
</div>
</form>
Zend_Form クラスの内容は次のとおりです。
$account = new Zend_Form_Element_Text('txtAccount');
$account -> setLabel('Account ID:')
-> setAttrib('style','width:250px')
-> setRequired(true)
-> addValidator('NotEmpty', true);
$this->setDecorators(array(
'FormElements',
array(
'HtmlTag',
array(
'tag' => 'div',
'class' => 'login_bx',
)
),
'Form',
array('FormErrors', array(
'placement' => 'prepend',
'markupElementLabelEnd' => '</strong>',
'markupElementLabelStart' => '<strong>',
'markupListStart' => '<div class="errors_list" id="msg">',
'markupListEnd' => '</div>',
'markupListItemStart' => '<div class="error_item">',
'markupListItemEnd' => '</div>'
))
));
$this->addElements(array($account));
$this->setElementDecorators(array(
'ViewHelper',
//'Errors',
array(array(
'data' => 'HtmlTag'
), array(
'tag' => 'div',
'class' => 'inp_field'
)
),
array('Label', array(
'tag' => 'div',
'class' => 'txt_field'
))
));
現在レンダリングされている html は次のとおりです。
<form enctype="application/x-www-form-urlencoded" method="post" action="">
<div class="login_bx">
<div id="txtAccount-label">
<label for="txtAccount" class="txt_field required">Account ID:</label>
</div>
<div class="inp_field">
<input type="text" name="txtAccount" id="txtAccount" value="" style="width:250px">
</div>
</div>
</form>
ラベルをラップする DIV にクラスを追加する方法がわかりませんでした