Zend_form_element_radio无法将类添加到标签
我试图向一组单选按钮中的每个标签添加一个类(相同)。Zend_form_element_radio无法将类添加到标签
这是我的代码:
$linkedin_share = new Zend_Form_Element_Radio('linkedin_share', array('escape' => false));
$linkedin_share->setDecorators(array('ViewHelper','Errors', array('Label', array('class' => 'TEST'))))
->addMultiOption('none', $this->getView()->translate('None'))
->addMultiOption('icon', '<img src="'.$this->getView()->baseUrl().'/images/admin/icons/social_media_share/linkedin.png'.'"/>')
->addMultiOption('counter', '<img src="'.$this->getView()->baseUrl().'/images/admin/icons/social_media_share/linkedin_share.jpg'.'"/>')
->setSeparator('')
->setAttrib('class', 'item_small_checkbox');
这是我的输出:
<label for="linkedin_share-none">
<label for="linkedin_share-icon">
<label for="linkedin_share-counter">
这是我想要的输出:
<label for="linkedin_share-none" class="share_label_class">
<label for="linkedin_share-icon" class="share_label_class">
<label for="linkedin_share-counter" class="share_label_class">
愚蠢的事情是,它适用于迄今为止我所有的其他表单元素。我尝试了一百万个组合并搜索了我的屁股,但无论我尝试什么,我都无法将类添加到标签中。
想法,解决方案,建议都非常欢迎!提前致谢!
我花了两个小时才找到答案,这是僵硬的简单!该行添加到你的宣言: -
->setAttrib('label_class', 'share_label_class')
的Zend /搜索/助手/ FormRadio.php线79 - 95给我的线索。
$label_attribs = array();
foreach ($attribs as $key => $val) {
$tmp = false;
$keyLen = strlen($key);
if ((6 < $keyLen) && (substr($key, 0, 6) == 'label_')) {
$tmp = substr($key, 6);
} elseif ((5 < $keyLen) && (substr($key, 0, 5) == 'label')) {
$tmp = substr($key, 5);
}
if ($tmp) {
// make sure first char is lowercase
$tmp[0] = strtolower($tmp[0]);
$label_attribs[$tmp] = $val;
unset($attribs[$key]);
}
}
这适用于我的系统,我希望它也适合您。
哇!非常简单!非常感谢! ZF在某些方面确实缺乏文档记录,这是一件令人失望的事情。 –
是的,最好的文档是代码。它写得很好,所以你通常可以最终解决问题。感谢有趣的问题。 – vascowhite
试试这个:
$linkedin_share = new Zend_Form_Element_Radio('linkedin_share', array('escape' => false));
$linkedin_share->setAttrib('class', 'item_small_checkbox');
$linkedin_share->setDecorators(array('ViewHelper','Errors', array('Label', array('class' => 'TEST'))))
->addMultiOption('none', $this->getView()->translate('None'))
->addMultiOption('icon', '<img src="'.$this->getView()->baseUrl().'/images/admin/icons/social_media_share/linkedin.png'.'"/>')
->addMultiOption('counter', '<img src="'.$this->getView()->baseUrl().'/images/admin/icons/social_media_share/linkedin_share.jpg'.'"/>')
->setSeparator('');
OR
// linkedin_share
$this->addElement(
'radio',
'linkedin_share',
array(
'label' => 'Linkedin Share',
'separator' => ' ',
'class' => 'item_small_checkbox',
)
);
$this->linkedin_share->addMultiOption('none', $this->getView()->translate('None'))
->addMultiOption('icon', '<img src="' . $this->getView()->baseUrl() . '/images/admin/icons/social_media_share/linkedin.png' . '"/>')
->addMultiOption('counter', '<img src="' . $this->getView()->baseUrl() . '/images/admin/icons/social_media_share/linkedin_share.jpg' . '"/>');
你能告诉我们它的工作原理的代码吗?我会试着去看看这两者之间有什么不同,或者什么是不同的工作元素(如果不相同)。 – jhuet