Zend今天下午让我疯了,我需要在标签内添加一个:
<label><span>Some Text</span></label>
这是我的表单装饰器,但它根本不适合我放在第一个标签之前:
$checkbox->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'),
array('tag' => 'div', 'class' => 'myspans')),
array('Label', array('tag' => 'span', 'class' => 'sdfdsf'))
));
任何想法杀了我!?
Ĵ
编辑:
我不确定这是否会影响它,但它基本上会从数组中创建大量复选框,所以它在foreach循环中:
foreach($software as $prev => $p)
{
//$checkbox->setLabel($p);
$checkbox->addMultiOption($prev,$p);
$checkbox->setAttrib('id', 'checkbox');
$checkbox->setSeparator(' ');
$checkbox->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'),
array('tag' => 'div', 'class' => 'myspans')),
array('Label', array('tag' => 'span', 'class' => 'sdfdsf'))
));
}
答案 0 :(得分:0)
我可以尝试两次:
<强> 1。写一个自定义装饰器:
class MyLabel extends Zend_Form_Decorator_Abstract {
public function render($content) {
return sprintf(
'<label><span>Some Text</span></label>%s',
$content
) ;
}
}
然后只需将其添加到装饰器列表中:
$checkbox->addDecorator(new MyLabel());
<强> 2。禁用转义
你也可以禁用转义并直接将html标签放在标签内:
$checkbox->setLabel('<span>Some Text</span>');
$checkbox->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'),
array('tag' => 'div', 'class' => 'myspans')),
array('Label', array('escape' => false, 'tag' => 'span', 'class' => 'sdfdsf'))
));
显然,这种方法应该谨慎使用,因为它可能会导致XSS漏洞。