php zend-framework radio-button label zend-form

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.