2012-10-10 8 views
9

में एक नियंत्रक से दूसरे में एक चर को कैसे पास किया जाए, मैंने अभी कोड इग्निटर सीखना शुरू कर दिया है।कोड इग्निटर

मैं जानना चाहता हूं कि मैं एक नियंत्रक (first_cont.php) से दूसरे नियंत्रक (second_cont.php) में एक चर को कैसे पास कर सकता हूं?

किसी भी मदद की सराहना की जाएगी।

अग्रिम धन्यवाद :)

+2

दुकान चर सत्र –

उत्तर

13

यह परिस्थितियों पर निर्भर करेगा। यदि आप कुछ समय के लिए डेटा को बनाए रखना चाहते हैं, तो सत्र डेटा जाने का तरीका होगा। हालांकि, अगर आपको केवल इसे एक बार उपयोग करने की आवश्यकता है, तो फ्लैश डेटा अधिक उपयुक्त हो सकता है।

$this->session->set_flashdata('item', $myVar); 

अंत में, दूसरा नियंत्रक में, डेटा लाने:

$this->load->library('session'); 

फिर फ़्लैश डेटा में जानकारी स्टोर:

प्रथम चरण सत्र पुस्तकालय आरंभ होगा

$myVar = $this->session->flashdata('item'); 

जाहिर है इसका मतलब यह होगा कि आपको या तो सत्र लाइब्रेरी को फिर से शुरू करना होगा दूसरे नियंत्रक से, या अपना स्वयं का बेस नियंत्रक बनाएं जो सत्र लाइब्रेरी को लोड करता है और आपके दोनों नियंत्रक उस से प्राप्त होते हैं।

+0

मैं आइटम को पुनर्प्राप्त करने में असमर्थ हूं। क्या गलत है । – Aditi

+0

@Aditi क्या कोई त्रुटि संदेश है? –

+0

कोई त्रुटि संदेश नहीं है – Aditi

7

मैं CodeIgniter में लगता है कि आप चर पारित नहीं हो सकता, दो अलग अलग नियंत्रक के बीच। सत्र डेटा का उपयोग करना एक स्पष्ट तंत्र है।

+4

में मुझे लगता है कि पर सहमत से मान प्रदान कर सकते हैं। सीआई में विशिष्ट रूटिंग है जहां यूआरआई के माध्यम से नियंत्रकों का उपयोग किया जाता है। सत्र डेटा उपयोगी होगा $ यह-> सत्र-> set_userdata ('डेटा', $ डेटा); रीडायरेक्ट ('second_cont.php'); – kjurkovic

7

ठीक है, यहाँ MVC के बारे में कुछ है सबसे होगा आसानी से बोली:

एक नियंत्रक इनपुट लेने के लिए, एक मॉडल अपने तर्क के लिए है, और, एक दृश्य प्रदर्शित करने के लिए है।

अब, कड़ाई से बोलते हुए आपको किसी नियंत्रक से दूसरे डेटा को डेटा नहीं भेजना चाहिए। मैं किसी भी मामले के बारे में सोच नहीं सकता जहां इसकी आवश्यकता है।


लेकिन, अगर यह बिल्कुल की जरूरत है, तो आप बस redirect सिर्फ अन्य नियंत्रक पर रीडायरेक्ट करने इस्तेमाल कर सकते हैं।

कुछ की तरह:

// some first_cont.php code here 
redirect('/second_cont/valuereciever/value1') 


// some second_cont.php code here 
public function valureciever($value){ 
    echo $value; // will output value1 
} 
4

कोडिग्निटर में एक नियंत्रक से दूसरे को मूल्य पारित करने के कई तरीके हैं।

आप डेटा नियंत्रक सत्र का उपयोग एक नियंत्रक से डेटा को दूसरे नियंत्रक में पास करने के लिए कर सकते हैं।

कि के लिए आप पहले सत्र

$this->load->library('session'); 

तो आप चर नाम का उपयोग कर फ़्लैश डेटा मूल्य निर्धारित कर सकते हैं के लिए पुस्तकालय में शामिल करने के लिए है।

// Set flash data 
$this->session->set_flashdata('variable_name', 'Value'); 

उन्हें आप मूल्य जहां CodeIgniter सत्र flashdata

// Get flash data 
$this->session->flashdata('variable_name'); 

दूसरा विकल्प का उपयोग कर CodeIgniter आप नियंत्रक का नाम, विधि का नाम और मान और उसके बाद के साथ नियंत्रण से यूआरएल अनुप्रेषित करने की अनुमति के द्वारा चाहते हैं प्राप्त कर सकते हैं आप किसी अन्य नियंत्रक में मान प्राप्त कर सकते हैं।

// Passing the value 
redirect('/another_controller_name/method_name/variable'); 

तो फिर तुम एक और नियंत्रक में मूल्य प्राप्त कर सकते हैं

+0

आपका उत्तर कुछ भी नहीं बदलता है, इसका पहले से ही उत्तर दिया गया है और मौजूदा उत्तर के समान है। –

+0

@ फहराद, मैं सहमत नहीं हूं। यह उत्तर वैरिएबल पास करने के दोनों तरीकों को दिखाता है: मैथ्यू डेली और कलपेश पटेल के साथ-साथ प्रसंथ उत्तर द्वारा वर्णित। वास्तव में, मुझे यकीन नहीं है कि यह मेरे लिए सबसे अच्छा जवाब नहीं है। – Line

+0

यदि उपयोगकर्ता पृष्ठ को रीफ्रेश करता है तो क्या होगा? फ़्लैश डेटा वैरिएबल अब मौजूद नहीं है ... कोड विफल हो जाएगा – Diego

1

आप पहली बार नियंत्रक में सत्र का उपयोग कर रहे हैं तो पहले नियंत्रक में न सेट नहीं है कि सत्र

public function method_name($variable) 
{ 
echo $variable; 
} 

सब यही कारण है कि .... , इसके बजाय अन्य नियंत्रक जैसे

$sess_array = array('value_name1' => 'value1', 'value_name2' => 'value2'); 
$this->session->set_userdata('session_name', $sess_array); 

n

$session_data= $this->session->userdata('session_name'); 
$any_var_name = $session_data['value1']; 
$any_var_name = $session_data['value2']; 

के रूप में अन्य नियंत्रक में इस सत्र फिर से लोड है कि यह कैसे आप एक नियंत्रक ....

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