私はzendフレームワーク1.12で1つのプロジェクトに取り組んでいます。デコレータを生成するために、「Zend_Form」を拡張する1つのクラス「Application_Form_Base」を作成しました。このクラスのコードは、フォームにラベルデコレータを使用して新しい要素を追加すると、そのラベルに1つのcssクラス「field_label」が適用されます。問題は、あるフォームでは、実行時にラベルのこのcssクラスを削除したいということです。誰かが考えを持っています、フォーム要素をレンダリングするときに実行時にこのcssクラスを削除するにはどうすればよいですか?
以下は私の中間フォームクラスです
<?php
class Application_Form_Base extends Zend_Form
{
public $elementDecorators = array(
'ViewHelper',
'Errors',
array(
'label',
array(
'class' => 'field_label'
)
),
array(
array(
'row' => 'HtmlTag'
),
array(
'tag' => 'div',
'class' => 'form-row'
)
)
);
public $buttonDecorators = array(
'ViewHelper',
array(
array(
'label' => 'HtmlTag'
),
array(
'tag' => 'label',
'placement' => 'prepend',
'class'=>'field_label'
)
),
array(
array(
'row' => 'HtmlTag'
),
array(
'tag' => 'div',
'class' => 'form-row'
)
)
);
public function loadDefaultDecorators ()
{
$this->setDecorators(
array(
'FormElements',
array(
'HtmlTag',
array(
'tag' => 'div',
'class' => 'zendForm'
)
),
'Form'
));
}
}
以下は私の検索フォームの抜粋です
class Admin_Form_SubscribeSearch extends Application_Form_Base
{
public function init()
{
$locale = Zend_Registry::get('Zend_Translate');
/* Form Elements & Other Definitions Here ... */
$this->setMethod('post');
$this->setName('searchPackage');
$this->addElement('text','name',array(
'label'=>$locale->translate('label_name'),
'required'=>true,
'decorators'=> $this->elementDecorators,
'filters'=>array('StringTrim'),
'class'=>'',
));
以下は、そのフォームフィールドに対して生成されたhtml出力です。
<label class="field_label required" for="price">name</label>
ビューでフォーム要素をレンダリングするときに、この'field_label'クラスを削除したいと思います。どうすればこれを達成できますか?