2016-12-16 16 views
5

मार्ग.एफ़.पी. में मैंने 2 टोकन वाले नियंत्रक के लिए एक मार्ग परिभाषित किया।यूआरएल ने गलत नियंत्रक को मारा LARAVEL

Route::get('/{category}/{slug}', '[email protected]'); 

सब कुछ जब तक है जब वहाँ एक यूआरएल संरचना समान है, लेकिन एक है कि उस मार्ग नीचे दिखाया गया है द्वारा पकड़ा जा करने के लिए कोई लेना देना नहीं है के लिए एक कॉल है ठीक काम कर रहा है।

तो जब मेरे पास उदाहरण के लिए "/admin/tags" है, तो नीचे नियंत्रक ट्रिगर किया गया है क्योंकि इसकी "/{category}/{slug}" की एक ही संरचना है और निश्चित रूप से यह मुझे एक त्रुटि देता है, क्योंकि इसे एक चर नहीं मिलता है।

तो अब मैंने नीचे उस मार्ग को स्थानांतरित करने में समस्या को ठीक किया है, लेकिन मेरा मानना ​​है कि मुझे इस व्यवहार को पहले से रोकने के लिए कुछ करना है, क्योंकि अगर मेरे पास अलग-अलग टोकन के साथ कई मार्ग हैं तो हर बार ट्रिगर किया जाएगा और वहां होगा एक गड़बड़ हो

तो, इन मामलों में क्या करना चाहिए?

पीएस मैं लैरवेल

+0

यदि आपके पास ऐसा मार्ग है (वाइल्डकार्ड मार्ग की तरह), तो हमेशा मार्ग के नीचे इसे रखना सर्वोत्तम होता है। – aceraven777

उत्तर

2

मार्ग के लिए कुछ बाधा का उपयोग करता हूं, संदर्भ parameters-regular-expression-constraints के साथ सुपर शुरुआती हूं। उदाहरण के लिए:

Route::get('user/{name}', function ($name) { 
    // 
}) 
->where('name', '[A-Za-z]+'); 

या आप अनिश्चित से पहले सबसे विशिष्ट बना सकते हैं। उदाहरण के लिए, इस क्रम में:

Route::get("/admin/tags", '......'); 
Route::get('/{category}/{slug}', '[email protected]'); 
1

यदि मार्ग दो टोकन उस तरह की जरूरत है, मैं आमतौर पर उपसर्ग जोड़ने कर रहा हूँ तो मेरे मार्गों इस

Route::get('/categories/{category}/slug/{slug}', '[email protected]'); 

या

Route::get('/categories/{category}/{slug}', '[email protected]'); 
0

मैं की तरह लग रहा एक ही मुद्दा था। मैं हर पथ पैरामीटर पर कमी है (जैसा कि आप हमेशा चाहिए) और दुर्भाग्य से संघर्ष निम्नलिखित के बीच होता है:

Route::get('{userId}/{path}', [ 
    'as' => 'products', 
    'uses' => '[email protected]' 
])->where(['id' => '[0-9]+', 'path' => '[0-9a-fA-F]+']); 

Route::get('link/{link_path}', [ 
    'as' => 'product-link', 
    'uses' => '[email protected]' 
])->where(['link_path' => '[0-9a-fA-F]+']); 

कहाँ यह अभी भी करने की कोशिश की है, भले ही एक पथ पथ में प्रीपेंड 'क्लिक /' है दूसरे को मारा। दूसरे मार्ग के ऊपर पूर्व निर्धारित 'लिंक /' के साथ मार्ग रखकर इसे प्राथमिकता और काम किया गया।

व्यक्तिगत रूप से मुझे लगता है कि अगर आपके पास ऐसी स्थिति है जो उस मार्ग पर नहीं मिलती है जहां खंड को इसे छोड़ना चाहिए और अगले स्थान पर जाना चाहिए। यह वास्तव में मुझे एक सशर्त बनाने के लिए समझ में नहीं आता है जो शर्तों को पूरा नहीं होने पर वास्तव में पारित नहीं होता है।

उम्मीद है कि यह किसी और को इस मुद्दे के साथ मदद करता है।

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