我是Zend的新手,不得不说使用表格让我很头疼。所以我需要一些帮助,因为我认为在框架中这样做更好。所以,我有以下PHP代码来创建一组单选按钮
$this->addElement(
'radio',
'paymentmethod',
array(
'multioptions' => array('aa'=>'AA','bb'=>'BB','cc'=>'CC','dd'=>'DD','ee'=>'EE'),
'decorators' => self::$inputDecoratorTwBsFormRadioBtn,
'disableLoadDefaultDecorators' => true,
)
);
在我的装饰者中,我有以下代码:
public static $inputDecoratorTwBsFormRadioBtn = array(
'ViewHelper',
array(
'Errors',
array('class' => 'alert alert-danger', 'placement' => 'prepend')
),
array(
array('row' => 'HtmlTag', ),
array('tag' => 'div', 'class' => 'form-group-radio-btn')
),
);
我的HTML的最终结果如下:
<div class="form-group-radio-btn">
<label><input type="radio" name="paymentmethod" id="paymentmethod-aa" value="aa">AA</label><br>
<label><input type="radio" name="paymentmethod" id="paymentmethod-bb" value="bb">BB</label><br>
...
</div>
我要做的是在span
内添加label
元素。所以我有这样的标签:
<label><input type="radio" name="" id="" value="aa">AA<span></span></label>
我尝试了以下内容:
$this->addElement(
'radio',
'paymentmethod',
array(
'multioptions' => array('aa'=>'AA <span> </span>'...
但显然,这种方法将span元素作为文本。
关于如何添加此HTML标记的任何想法?
答案 0 :(得分:1)
也许您可以尝试通过在disable_html_escape
选项中将true
选项设置为label
来实现此目的。就像这样:
$this->add(array(
'type' => 'radio',
'name' => 'paymentmethod',
'options' => array(
'value_options' => array(
'AA' => array(
'label' => 'AA <span></span>',
'value' => 'aa',
'label_options' => array(
'disable_html_escape' => true,
)
),
'BB' => array(
'label' => 'BB <span></span>',
'value' => 'bb',
'label_options' => array(
'disable_html_escape' => true,
)
),
'CC' => array(
'label' => 'CC <span></span>',
'value' => 'cc',
'label_options' => array(
'disable_html_escape' => true,
)
),
),
),
));
编辑:
如果上面的代码不起作用,您可以在视图中执行以下操作:
echo html_entity_decode($this->formRow($form->get('element')));
html_entity_decode()函数会将element
中的所有HTML标记转换为适用的字符,就像html代码不会被转义一样。
但是要制作一个干净的解决方案,您应该创建自定义FormLabel
并在覆盖html_entity_decode
的{{1}}函数时使用__invoke
。
没有测试过,但你会有这样的事情:
FormLabel