在创建单选按钮后以我的zend形式有标签包装单选按钮
<label for="type-per"><input type="radio" class="radio" value="per" id="type-per" name="type">Percentage</label>
我遇到的问题是,当我点击包装标签时,按钮上没有选中按钮,所以我想删除包装标签,我不想删除表单中的所有标签。我只想删除单选按钮的包装标签。这是我的单选按钮代码,
$type = new Zend_Form_Element_Radio('type');
$type->setLabel('Type');
$type->addMultiOption('per', 'Percentage');
$type->addMultiOption('fix','Fixed');
$type->setRequired(true);
$type->removeDecorator('Errors');
$type->addErrorMessage('You must select a type.');
$type->class = 'radio';
$type->setDecorators(
array(
array('ViewHelper',
array('helper' => 'formRadio')
),
array('Label',
array('class' => 'label')
),
array(
array('out'=>'HtmlTag'),
array('tag' => 'div', 'class' => 'formfield', 'id' => 'type_div')
),
array(
array('prepend' => 'HtmlTag'),
array('tag' => 'div', 'class' => 'clear', 'placement' => 'prepend')
)
)
);
请帮助:(
答案 0 :(得分:1)
首先,您的装饰器集不会生成您提供的HTML。然而
要完全删除标签,请从装饰器集中删除此行
array('Label', array('class' => 'label') ),
但它也将删除文本
您也可以尝试
array('Label',
array('class' => 'label',
'placement'=>'APPEND',
'tag'=>'span', //if you want to use other tag
'disableFor'=>true)
),
可能'disableFor'=>true
是您所需要的,因为它会移除for
的{{1}}属性,该label
属性负责在点击{{1}时激活input
}。
第三种方法是使用仅附加文本的自定义装饰器(您可以使用标签装饰器作为基础并将label
替换为您的代码)
作为旁注:您也不需要355. $label = $view->formLabel($element->getFullyQualifiedName(), trim($label), $options);
,因为当您稍后使用$type->removeDecorator('Errors');
时,它会首先删除所有装饰器(包括setDecorators
),然后添加您列出的新装饰器,如果省略Errors
,则不会添加。