php - Zend_form_element_radio no puede agregar clases a la etiqueta
zend-framework radio-button (2)
prueba esto:
$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('''');
O
// 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'' . ''"/>'');
Estoy intentando agregar una clase (lo mismo) a cada etiqueta en un grupo de botones de radio.
Este es mi código:
$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'');
Y esta es mi salida:
<label for="linkedin_share-none">
<label for="linkedin_share-icon">
<label for="linkedin_share-counter">
Este es mi resultado deseado:
<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">
Lo estúpido es que funciona para todos mis otros elementos de forma hasta el momento. Probé un millón de combinaciones y busqué por todas partes, pero no importa lo que intento, no puedo agregar clase a la etiqueta.
¡Ideas, soluciones, sugerencias son bienvenidas! ¡Gracias por adelantado!
Me llevó dos horas encontrar la respuesta y es exasperantemente simple. Agregue esta línea a su declaración: -
->setAttrib(''label_class'', ''share_label_class'')
Zend / View / Helper / FormRadio.php línea 79 - 95 me dio la pista.
$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]);
}
}
Esto funciona en mi sistema, espero que también lo haga para ti.