2011-10-05 13 views
6

लेबल करने के लिए कक्षा नहीं जोड़ सकता है, मैं रेडियो बटन के समूह में प्रत्येक लेबल में एक कक्षा (वही) जोड़ने की कोशिश कर रहा हूं।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"> 

बेवकूफ बात यह है कि इसके लिए काम करता है अब तक मेरे सभी अन्य फॉर्म तत्व। मैंने दस लाख संयोजनों की कोशिश की और मेरे गधे की खोज की, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं कोशिश करता हूं कि मैं कक्षा में कक्षा नहीं जोड़ सकता।

विचार, समाधान, सुझाव सभी का स्वागत है! अग्रिम में धन्यवाद!

+0

क्या आप हमें उन तत्वों का कोड दे सकते हैं जिनके लिए यह काम करता है? मैं उन लोगों के बीच क्या अलग है, या जो काम कर रहे तत्वों के रूप में अलग है, यह देखने की कोशिश करता हूं (यदि यह समान नहीं है)। – jhuet

उत्तर

17

यह मुझे दो घंटे लगे जवाब खोजने के लिए और इसे infuriatingly आसान है! अपने घोषणा करने के लिए इस पंक्ति जोड़ें: -

->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]); 
     } 
    } 

यह मेरे सिस्टम पर काम करता है, मुझे आशा है कि यह आपके लिए भी होगा।

+0

वाह! इतना अविश्वसनीय रूप से सरल! आपका बहुत बहुत धन्यवाद! यह एक बमर है कि कुछ बिंदुओं पर जेडएफ में वास्तव में बहुत कुछ दस्तावेज नहीं है। –

+1

हाँ, सबसे अच्छा दस्तावेज कोड है। यह अच्छी तरह लिखा गया है, इसलिए आप आमतौर पर चीजों को अंततः काम कर सकते हैं। दिलचस्प सवाल के लिए धन्यवाद। – vascowhite

0

इस प्रयास करें:

$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(''); 

या

// 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' . '"/>'); 
+0

काम नहीं करता है। मैंने पहले से ही विभिन्न पदों में सजावटी लगाने की कोशिश की है। –

+0

अगर आप सजावटी काम को हटाते हैं? – JellyBelly

+0

आपका मतलब क्या है? अन्य सभी सज्जाकारों को हटा दें? वह या तो काम नहीं किया। मैंने सभी संभावित सज्जाकारों को जोड़ने की भी कोशिश की। –