我正在研究zend framework 1.12中的一个项目。为了生成装饰器,我创建了一个类'Application_Form_Base',它扩展了'Zend_Form'。我在这个类中编写了代码,当我在我的表单中添加带有标签装饰器的新元素时,它在该标签上应用了一个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'类。我该怎么做到这一点?
答案 0 :(得分:0)
您可以为特定元素设置特定的装饰器:
$element = $this->getElement('name');
$element->setDecorator(array('Label')); // without additional class