2008-09-22 20 views
8

मैं कोडइग्निटर का उपयोग ढांचे के रूप में पिछले कुछ हफ्तों में एक साइट विकसित कर रहा हूं। मैं कुछ हासिल करने का सबसे अच्छा तरीका सोच रहा हूं, जो कि अन्य भाषाओं में कई अन्य ढांचे में अपेक्षाकृत सरल है: क्रमबद्ध टेबल। CodeIgniter डिफ़ॉल्ट रूप से क्वेरी स्ट्रिंग को बंद कर देता है, क्योंकि आपके यूआरएल में विधि पैरामीटर होते हैं। तो एक यूआरएल की तरह लग सकता है:कोडइग्निटर का उपयोग करके मैं टेबल सॉर्टिंग कैसे करूं?

/controller/method/param1/param2 

आपको लगता है कि हो सकता है कि आप बस नियंत्रक विधि के लिए sortBy और sortOrder दो के रूप में अतिरिक्त पैरामीटर में जोड़ सकते हैं। मैं विशेष रूप से ऐसा नहीं करना चाहता, मुख्य रूप से क्योंकि मैं एक पुनः उपयोग करने योग्य नियंत्रक चाहता हूं। जब आप क्वेरी स्ट्रिंग पैरामीटर का उपयोग करते हैं, तो PHP आसानी से आपको बता सकता है कि sortBy नामक पैरामीटर है या नहीं। हालांकि, जब आप यूआरएल आधारित पैरामीटर का उपयोग कर रहे हैं, तो यह प्रत्येक नियंत्रक के साथ अलग-अलग होगा।

मैं सोच रहा था कि मेरे विकल्प क्या थे। जहां तक ​​मैं देख सकता हूँ कि वे की तरह कुछ कर रहे हैं: मेरी sortBy और sortOrder मानकों में

  • पास, बस इसे चूसना अप, और इसके लिए कुछ से कम पुन: प्रयोज्य घटक का विकास।
  • एक अतिरिक्त नियंत्रक है, जो सत्र में sortBy और sortOrder स्टोर करेगा (हालांकि यह जानना होगा कि आप कहां से आए थे, और आपको मूल पृष्ठ पर वापस भेज देंगे)।
  • किसी प्रकार का AJAX फ़ंक्शन है, जो उपरोक्त नियंत्रक को कॉल करेगा; फिर पेज को फिर से लोड करें।
  • हैक कोडइग्निटर क्वेरी स्ट्रिंग को वापस चालू करने के लिए। असल में, अगर यह एकमात्र विकल्प है, तो इसे करने के तरीके के बारे में कोई भी लिंक सराहना की जाएगी।

मुझे विश्वास नहीं है कि इस तरह का एक साधारण कार्य ऐसी समस्या पेश करेगा! क्या मैं कुछ भूल रहा हूँ? क्या किसी के पास कोई सिफारिश है?


स्पष्टीकरण के लिए संपादित करें: मुझे jQuery से प्यार है, और मैं इसे साइट पर पहले से ही उपयोग कर रहा हूं, इसलिए टेबलस्टर एक अच्छा विकल्प है। हालांकि, मैं सर्वर-साइड सॉर्टिंग करना चाहता हूं क्योंकि पेजगिन समेत संभावित रूप से बड़ी संख्या में परिणाम वाले कुछ पेज हैं।

उत्तर

5

मैं इस पद्धति का उपयोग किया गया है: http://codeigniter.com/forums/viewthread/45709/#217816

मैं भी इसका विस्तार तरह बंद इसलिए आधारित कुकी सेट करने की जब कोई वापस मेज पहले की तरह ही क्रमबद्ध हो जाता है आता है। net.tutsplus.com

दुर्भाग्य से http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/

यह उपयोग कर रहा है आपको पसंद नहीं है क्या (/ नियंत्रक/विधि/param1/param2), लेकिन मैं इस जोड़ लिया है:

+17

यूआरएल अब मौजूद नहीं है – Chumillas

0

मैंने हाल ही में अपने पृष्ठों के एक समूह में यह Table sorter (जो प्रोटोटाइप का उपयोग करता है) जोड़ा है। यह लागू करने के लिए तेज़ और बहुत आसान है।

2

यदि आप क्लाइंट पक्ष पर सॉर्ट करने के ठीक हैं, तो the Tablesorter plugin for jQuery बहुत अच्छा है।

+0

धन्यवाद एक बहुत, यह मेरे समय –

+1

का एक बहुत बचत होगी Tablesorter एक ही है, जो उपयुक्त नहीं है, तो आप डेटा की एक बहुत से लोड करना चाहते हैं में पूरे क्वेरी परिणाम लोड हो जाता है । – Randell

+0

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

1

मैं इसमें काफी जटिल तालिका के साथ भाग गया। कठिन हिस्सा यह था कि कुछ चर के आधार पर तालिका बढ़ सकती/हट सकती है !! बिग दर्द :(

यहाँ कैसे मैं इसे संभाला है ..

समायोजित सिस्टम/आवेदन/config/config.php यूआरआई में अल्पविराम चरित्र अनुमति देने के लिए:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-,'; 

एक साथ अपने नियंत्रक को समायोजित करें सॉर्टिंग फ़ंक्शन:

function sorter() { 
    //get the sort params 
    $sort = explode(",",$this->uri->segment(3)); //the 3rd segment is the column/order 
    //pass the params to the model 
    $data = $this->model_name->get_the_data($sort[0],$sort[1]); 
    $this->_show($data); 
} 
function _show($data) { 
    //all the code for displaying your table 
} 

मैंने oversimplified किया है, लेकिन आपको विचार मिलता है।यह काम है से निपटने के लिए है -,

/नियंत्रक/सॉर्टर/columnName sortorder

सॉर्टर समारोह प्रदर्शन/टेम्पलेट/दृश्य तर्क से निपटने के लिए एक और आंतरिक फ़ंक्शन को कॉल: उद्देश्य एक ऐसा URL है सॉर्टिंग कॉल और मॉडल से उपयुक्त डेटा प्राप्त करें।

बेशक

, यह सिर्फ अपने वर्तमान कार्य करने के लिए कम किया जा सकता:

function showGrid() { 
    $sort = $this->uri->segment(3); 
    if ($sort) { 
    //get the data sorted 
    } else { 
    //get the data the default way 
    } 
    //rest of your view logic 
} 

इस तरह, आप भी एक अलग समारोह की जरूरत नहीं है - और अपने छंटाई परिभाषित करने के लिए तीसरे खंड का उपयोग कर सकते हैं।

+0

आप हार्ड-कोडिंग यूआरआई सेगमेंट की बजाय सॉर्टर फ़ंक्शन के लिए एक तर्क स्वीकार कर सकते हैं 3. अन्यथा यह एक बहुत अच्छा विचार जैसा लगता है। –

+0

धन्यवाद, यह बहुत उपयोगी है! –

1

मैं इस का उपयोग किया गया (प्रदर्शन समारोह) जब मुझे पेजिनेशन की आवश्यकता होती है तो प्रत्येक नियंत्रक के लिए। या इससे एक सहायक बनाओ।

अन्य उदाहरण यहाँ है: http://www.robertmullaney.com/2010/09/19/tablerecord-sorting-made-easier-for-codeigniter/

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

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