2012-02-09 6 views
9

मैं दो रेडियो बटन कैसे बना सकता हूं, जिसे $ foo के मूल्य के आधार पर पूर्व निर्धारित किया जा सकता है? नीचे स्निपेट उन्हें ठीक बनाता है लेकिन दो बटनों में से किसी एक का चयन नहीं करता है।केकेपीएचपी रेडियो बटन बना रहा है

$options = array('standard' => ' Standard','pro' => ' Pro'); 
$attributes = array(
    'legend' => false, 
    'value' => false, 
    'checked'=> ($foo == "pro") ? FALSE : TRUE, 
); 
echo $this->Form->radio('type',$options, $attributes); 

उत्तर

23

यह आसान है .. $ foo के लिए डिफ़ॉल्ट मान का उपयोग:

$options = array(
    'standard' => 'Standard', 
    'pro' => 'Pro' 
); 

$attributes = array(
    'legend' => false, 
    'value' => $foo 
); 

echo $this->Form->radio('type', $options, $attributes); 

आप प्रलेखन पर देख सकते हैं:

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::radio

+0

ए) वह 1.3 - बी का उपयोग कर रहा है) यह उत्तर "लगातार रूपों" के विचार को नष्ट कर रहा है। इसे अपने आप आज़माएं। इस फॉर्म को पोस्ट करें और खुद के लिए देखें। यदि कुछ भी है, तो आप "मूल्य" के बजाय फॉर्म param "default" का उपयोग कर सकते हैं। – mark

+0

मैं "डिफ़ॉल्ट" काम की पुष्टि करता हूं, इसलिए "मान" करता है। – stef

+0

मूल्य = हमेशा एक ही मान - डिफ़ॉल्ट = एक बार इसे पोस्ट करने के बाद और फॉर्म को अमान्य करता है पहले चयनित मान रखता है (एक अलग डिफ़ॉल्ट मान के बावजूद)।यही कारण है कि केवल डिफ़ॉल्ट का उपयोग किया जाना चाहिए। – mark

3

आप नियंत्रक से किसी भी रूप क्षेत्र के लिए मूल्य पहिले से चयन करना चाहिए

@see http://www.dereuromark.de/2010/06/23/working-with-forms/ "डिफ़ॉल्ट मान"

+0

माफ करना, मैं नहीं दिख रहा है कि कैसे उस लिंक समस्या का हल। – stef

+0

अच्छी तरह से, यह सब आपके लिए लिखित में लिखा गया है: ईएलएसई ब्लॉक में आपके एक्शन सेट में: $ this-> डेटा [मॉडल] [फ़ील्ड] = डिफॉल्टव्यू (आपके मामले में या तो 'मानक' या 'प्रो')। और कृपया अपने अगले प्रश्न में अपने केकेपीपी संस्करण का जिक्र करें! क्योंकि 2.0 के लिए यह $-> अनुरोध-> डेटा होगा - लेकिन जिस संस्करण का आप उपयोग कर रहे हैं उसे जानने के बिना आपको एक सटीक समाधान प्रदान करना मुश्किल है। – mark

+0

तो मैं नियंत्रक में कोड डालकर केवल एक रेडियो बटन का चयन कर सकता हूं, जबकि रेडियो उत्पन्न करने के लिए वास्तविक मार्कअप दृश्य में है? मैं 1.3 – stef

1

यह

$attributes = array(); 
    $options = array('standard' => 'Standard', 'pro' => 'Pro'); 

    if($foo === 'pro') { 
     $attributes['default'] = 'pro'; 
    } 

    echo $this->Form->radio('type', $options, $attributes); 

एक बेहतर समाधान जाने का रास्ता है मार्क ने इंगित किया है कि नियंत्रक में डिफ़ॉल्ट सेट करना है। इस तरह आप अपने नियंत्रक की कार्रवाई की तरह के अंत में डिफ़ॉल्ट सेट कर सकते ...

के अपने मॉडल मान लेते हैं साथ Member है membership_type field

$this->data['Member']['membership_type '] = 'pro'; 
+0

मैं असहमत हूं। उन क्षेत्रों के लिए डिफ़ॉल्ट मान जिनमें एक से अधिक राज्य हो सकते हैं तर्क का हिस्सा हैं और नियंत्रक से प्रदान किया जाना चाहिए (आपका समाधान ओवरहेड जैसा लगता है और शायद सत्यापन विफलता पर भी टूट जाएगा)। एकमात्र उपयोग केस जहां दृश्य स्तर उचित है: यदि डिफ़ॉल्ट/मान किसी विशिष्ट मान पर तय किया जाता है (हमेशा वही रहता है)। – mark

+0

हाँ स्पष्ट रूप से ऐसा करने का बेहतर तरीका नियंत्रक में है। लेकिन यह एक संभावित समाधान है क्योंकि ओपी ने यह नहीं पूछा कि किस विधि विधि का उपयोग करना है। मैंने पोस्ट को अपडेट किया है, पॉइंटिंग के लिए धन्यवाद। – Ehtesham

0
$options = array('Y'=>'Yes','N'=>'No'); 

$attributes = array('div' => 'input', 'type' => 'radio', 'options' => $options, 'default' => 'Y'); 

echo $this->Form->input('add to business directory',$attributes); 

HTH

+0

केवल एक सिर ऊपर, केकपीएचपी 2.x में मुझे यकीन नहीं है कि यह वाक्य है कि यह वाक्यविन्यास अभी भी काम करेगा। इस प्रश्न पर आने वाले किसी भी व्यक्ति का सिर। – usumoio

संबंधित मुद्दे