2017-05-11 9 views
7

मैं अपना कोडइग्निटर एप्लिकेशन वर्डप्रेस के समान काम करने की कोशिश कर रहा हूं।कोडइग्निटर में रूटिंग (: any)

मैं यूआरएल की तरह बनाने के लिए सक्षम होना चाहते हैं:

http://www.example.com/my-post-example

http://www.example.com/new-headline-here

http://www.example.com/i-love-stackoverflow

मेरे मार्ग:

$route['(:any)'] = "core/index/$1"; 

कौन सा मेरी कोर फोन करेगानियंत्रक और पेज नाम को इंडेक्स फ़ंक्शन में पास करें।

मैं फिर पेज के नाम के लिए अपने डेटाबेस में देखता हूं और पृष्ठ को उपयोगकर्ता को प्रदर्शित करता हूं। अब तक सब ठीक है।

हालांकि, ऐसे समय होंगे जब मैं एक और नियंत्रक को कॉल करना चाहता हूं। उदाहरण के लिए:

http://www.example.com/admin/edit_page/3

http://www.example.com/admin/settings

अब मुझे लगता है मेरी मार्ग बस इन सभी नियमों आकर्षित करने और उन्हें मेरी कोर नियंत्रक में भेज देंगे। क्या कुछ पृष्ठों के लिए अपवाद बनाने का कोई तरीका है? या मेरे कोर नियंत्रक के अंदर यह जांच करना एक अच्छा विचार है।

उदाहरण के लिए

,

if ($page not in DB) { 
    // Call controller/method 
} 

यह एक छोटे से अनावश्यक प्रतीत के बाद से मैं सिर्फ CodeIgniter इस हैंडल करना चाहते हैं।

उत्तर

4

आपके द्वारा उपयोग किए जाने वाले रूटिंग नियम आपके उद्देश्य के लिए ठीक है।

आप http://www.example.com/admin/edit_page/3 इस लिंक का उपयोग यदि यह आप admin नियंत्रक भेज देंगे और edit_page method.It मार्गों any नियम का उपयोग नहीं होगा।

हालांकि आप एक समस्या को मिल जाएगा अपने लिंक इस

http://www.example.com/my-post-example/test 

यह my-post-example नियंत्रक और परीक्षा पद्धति जाना करने की कोशिश करेंगे की तरह लग रहा है।

फिर से http://www.example.com/admin मार्ग any नियम का उपयोग करेगा, इसका अर्थ है कि यह admin/index के बजाय आपके मूल नियंत्रक को रीडायरेक्ट करेगा। उस स्थिति में आपके यूआरएल http://www.example.com/admin/index

अंत में होना चाहिए आप नियंत्रक/विधि नाम के साथ अपने अन्य लिंक कहते हैं, तो इससे आपके any नियम का उपयोग कर

+0

धन्यवाद ठीक हो जाएगा! क्या किसी भी यूआरएल पैटर्न से मेल खाने का कोई तरीका है? के साथ /? तो व्यवस्थापक/संपादन/एलओएल/कोर/इंडेक्स पर भी जाएंगे? या मुझे हर समय (: कोई भी)/(: कोई भी)/(: कोई भी) जोड़ना होगा? – Oliwol

+0

अपने '$ रूट ['(: any)'] =" core/index/$ 1 "से पहले एक और नियम जोड़ें;' नियम '$ मार्ग ['व्यवस्थापक/संपादन/lol'] =" core/index ";' –

+0

क्या अगर मैं किसी भी डेटा को फ़ंक्शन पर रूट करना चाहता हूं, जैसे: admin/edit/lol => core/index और admin/new/test => core/index। क्या प्रत्येक व्यक्तिगत नियम जोड़ने से बेहतर तरीका है?मार्ग की तरह ['व्यवस्थापक/(: कोई भी)/(: कोई भी)'] - लेकिन एक तीसरा, चौथा और 5 वां तक ​​अनंत जोड़ने की क्षमता के साथ। – Oliwol