17

यह वास्तव में मूल लगता है लेकिन मुझे इसकी लटका नहीं मिल सकती है।नियंत्रक को 2 पैरामीटर कैसे रूट करें?

मैं एक से अधिक पैरामीटर ऐसा दिखाई देता, नियंत्रक में एक विधि को भेजने के लिए कोशिश कर रहा हूँ:

$route['subjects/(:num)'] = 'subjects/view/$1'; 
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2'; 

विधि स्वीकार किए जाते हैं:

http://localhost/ci/index.php/subjects/3/state 

इस मार्ग मैं कोशिश की है है 2 पैरामीटर:

public function view($slug, $id = null){ 

} 

लेकिन मुझे 404 मिलते हैं। मैं इसे कैसे काम कर सकता हूं? मुझे हमेशा 1 पैरामीटर और वैकल्पिक अन्य पैरामीटर स्वीकार करने के लिए दृश्य विधि की आवश्यकता है।

नोट: मैं यूआरएल सहायक समेत हूं।

+1

इस $ मार्ग [ 'विषयों/(: संख्या)/(: किसी भी)'] की कोशिश = 'विषयों/देखें/$ 1/$ 2 '; – umefarooq

+1

काम करेगा यह काम किया है, समस्या का उपयोग मैं {} के बजाय {} था। धन्यवाद इसे एक उत्तर के रूप में जमा करें। –

उत्तर

30

आप अपने मार्ग ब्रैकेट के साथ समस्या है बस के लिए {से} इसे बदल() कोष्ठक

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2'; 
+0

ऐसा करने से मुझे रीफ्रेशिंग के अंतहीन लूप पर फंस गया है, इसलिए मुझे लगता है कि यहां कुछ गड़बड़ है ... –

+0

एरिक, क्या आपको अभी भी कोई समस्या है क्योंकि यह आपकी स्थिति के लिए काम करना चाहिए। क्या कोई अन्य कस्टम रूटिंग चल रहा है? – Malachi

+0

हां मैंने इसे हल किया, समस्या AJAX के URLS के साथ थी जिसे मैंने बनाया था जिससे infinte लूप का कारण बन गया लेकिन मैंने उनको ठीक किया। धन्यवाद! –

6

को

$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2'; 

से

काम करेंगे हमेशा अपने रूटिंग नियम बनाए रखने

जैसे

$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4'; 
$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3'; 
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2'; 

हमेशा मार्ग

के लिए इस पैटर्न का पालन करता है, तो आप इस

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2'; 
$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4'; 
$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3'; 

की तरह जोड़ने तो हमेशा पहली शर्त हर बार सच हो जाएगा।

भी इस लिंक का उल्लेख ->codeigniter routing rules

1

मैं एक बार इस URI पैटर्न

$route['(:any)'] = 'welcome/list1/$1'; 
$route['(:any)/(:num)'] = 'welcome/list1/$1/$2'; 

$route['(:any)/(:any)'] = 'welcome/list2/$1/$2'; 
$route['(:any)/(:any)/(:num)'] = 'welcome/list2/$1/$2/$3'; 

$route['(:any)/(:any)/(:any)'] = 'welcome/list3/$1/$2/$3'; 

की कोशिश की, लेकिन यह काम किया फ्लॉप ... इसलिए मैं नियमित अभिव्यक्ति से बदल दिया

([a-z 0-9 -]+) प्रतिस्थापित (:any) और ([0-9]+)(:num)

तो यह

$route['([a-z 0-9 -]+)'] = 'welcome/list1/$1'; 
$route['([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list1/$1/$2'; 

$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list2/$1/$2'; 
$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list2/$1/$2/$3'; 

$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list3/$1/$2/$3'; 

बन गया है और यह मेरे लिए काम किया :)

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