2009-11-05 5 views
6

मैं एक मॉडल में कुछ सहायक लोड करना चाहता हूं। यह कैसे करना है? उपयोग करने के लिए कोशिश की:कोडइग्निटर में मॉडल से सहायक कैसे लोड करें?

${get_parent_class($this)}->load->helper ('text'); 

लेकिन फिर भी एक त्रुटि

Fatal error: Call to a member function helper() on a non-object

उत्तर

-3
$this->load->helper('helpername') 
+1

एमडब्ल्यूएम के एवेसर के बजाय – Ben

+0

देखें यह $ अनुप्रयोग उदाहरण को संदर्भित करता है, जिसे किसी मॉडल के भीतर विश्वसनीय रूप से एक्सेस नहीं किया जा सकता है। एमडब्ल्यूएम के पास सीआई अनुप्रयोग के एक उदाहरण (बायफ) को असाइन करके और $ सीआई-> लोड-> सहायक ('foo') का उपयोग करके इसे एक्सेस करके सही है। – nageeb

+0

हेल्पर्स तब तक उपलब्ध नहीं हैं जब तक आपके पास सीआई ऑब्जेक्ट लोड नहीं होता है। एमडब्ल्यूएम का जवाब देखें। –

29

GSto $this->load->helper('helpername') दिए लेकिन यदि आप एक मॉडल की विधि में हैं, $this बस उस मॉडल (वर्ग) उदाहरण और नहीं के लिए संदर्भित करता हो रही सीआई ग्लोबल के लिए। वह काम नहीं करेगा!

इसके बजाय आप सीआई वैश्विक लोड करने के लिए और फिर सहायक लोड की जरूरत है:

// PHP 4 
// $ci =& get_instance(); 
// PHP 5  
$ci = get_instance(); 
$ci->load->helper('text'); 
+5

यह सही है, लेकिन इस तरह संदर्भ द्वारा असाइन करने की अनुशंसा की जाती है: $ ci = & get_instance(); यह सुनिश्चित करने के लिए कि आप इसे कॉपी करने के बजाय मूल कोडइग्निटर ऑब्जेक्ट का उपयोग कर रहे हैं। Http://codeigniter.com/user_guide/general/ancillary_classes.html (पृष्ठ के नीचे) देखें। –

-3

मुझे लगता है कि सहायक दोहराव के लिए सीआई does not को जांच ... सीआई herlpers प्रक्रियात्मक फ़ाइलें हैं, तो आप उर सहायक दो बार करता है, तो शामिल हो सकता है उर नियंत्रक के पास एक ही सहायक है जो आपके मॉडल के रूप में लोड होता है (जो उस नियंत्रक में लोड होता है)। हो सकता है कि इसके बजाय लाइब्रेरी करें ...

मैं देख सकता हूं कि मुझे नकारात्मक वोट मिलते हैं ... कोर सी से लोडर क्लास की जांच करके आप देख सकते हैं कि हेल्पर लोड होने पर हेल्पर्स विधि जांच नहीं रही है (यह is_loaded() सरणी में शामिल नहीं है जैसे कि लोड फैक्ट्री क्लास के माध्यम से लोड की जाने वाली अधिकांश कक्षाएं) ... मैं मॉडल और नियंत्रकों दोनों में मददगार लोड करने के लिए वैसे भी अनुशंसा नहीं करता हूं ... पूर्व में मैंने आउटपुट एन्कोडिंग के लिए एक सहायक बनाया है जिसका उपयोग मैं करता हूं नियंत्रकों में (इससे पहले कि मैं डेटा को देखने के लिए पास करता हूं)। अगर मैं दृश्य राज्य को दो बार बदलता हूं तो यह बहुत बुरा होगा ...

0

आपको मॉडल में सहायक लोड करने की आवश्यकता नहीं है। बस एक नियंत्रक में सहायक सहायक लोड करें और मॉडल में फ़ंक्शन का उपयोग करें और साथ ही हम आमतौर पर सहायक फ़ंक्शन का उपयोग करें नियंत्रक में

+0

आपको उदाहरण कोड – Wolfie

+0

का उपयोग करके इसे और अधिक स्पष्ट करना चाहिए, लेकिन यह बिल्कुल सही नहीं है। कभी-कभी सैनिटाइजेशन आदि के लिए मॉडल विधियों में सहायक की आवश्यकता होती है। – lenswipe

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