मेरे पास उपयोगकर्ता के अनुकूल यूआरएल के साथ दो मुद्दे हैं।ज़ेंड फ्रेमवर्क - मार्गों और regex के साथ उपयोगकर्ता के अनुकूल यूआरएल की स्थापना
मैं एक रूटर के रूप में स्थापित इस प्रकार है:
- वास्तविक URL
http://www.example.com/course/view-batch/course_id/19
- है मैं एक दोस्ताना यूआरएल चाहते
http://www.example.com/java-training/19
मैं सेटअप application.ini
में निम्नलिखित मार्ग है:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
यह काम करता है perf अच्छी तरह से अच्छी तरह से। जो जावा
की उपयोगकर्ता समीक्षाओं- वास्तविक URL है
http://www.example.com/course/view-reviews/course_id/19
- मैं एक दोस्ताना यूआरएल
http://www.example.com/java-reviews/19
मुझे लगता है इसकी एक वजह से संभव नहीं चाहते हैं -
अब मैं एक नया पृष्ठ है मार्ग पहले से ही उस प्रारूप से मेल खाने के लिए सेटअप है।
तो मैं सोच रहा था कि रेगेक्स का उपयोग करना संभव है या नहीं, अगर शीर्षक में "समीक्षा" है या नहीं, तो इस मार्ग का उपयोग करें।
मैंने इस दृष्टिकोण की कोशिश की, लेकिन यह काम नहीं करता है। इसके बजाय, यह दृश्य बैच पेज खुलता है: अगर मैं यूआरएल http://www.example.com/reviews/19
, उसके बाद दृश्य-समीक्षा कार्रवाई बुलाया जाता है में प्रवेश
resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "\breviews\b"
निकटतम मैं काम करने के लिए इस मिल गया है
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "reviews"
है अब। क्या यह संभव है - यह जांचने के लिए कि शीर्षक में "समीक्षा" शब्द है या नहीं - तो यह मार्ग लागू किया जाना चाहिए?
http://www.example.com/java-training/19
के लिए वापस मेरे पहले काम कर मार्ग के लिए जा रहे:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
संख्या 19
पाठ्यक्रम आईडी है, जो मैं कार्रवाई में की जरूरत है डेटाबेस से विवरण खींचने के लिए है।
लेकिन जब पृष्ठ प्रदर्शित होता है, तो मुझे नंबर 1 दिखाई नहीं देता है।
मैं सिर्फ यूआरएल http://www.example.com/java-training
इस संभव है बनना चाहते हो?
अरे जेरेमी - हार्ड कोडिंग एक विकल्प नहीं है क्योंकि "जावा-समीक्षा" एक कोर्स जावा के लिए है - अन्य अन्य पाठ्यक्रमों जैसे "php-reviews" - "पायथन-समीक्षा" आदि के लिए 10 अन्य पृष्ठ होंगे - ताकि मैं एक रेगेक्स की तलाश क्यों कर रहा था जो यूआरएल में शब्द समीक्षाओं को देखता है - धन्यवाद – Gublooo
आपका विकल्प अभी भी कड़ी कोडिंग है - लेकिन आप केवल अंत कोड को सही करते हैं। 'मार्ग = /: शीर्षक-समीक्षा /: course_id' और' मार्ग = /: शीर्षक-प्रशिक्षण /: course_id'। –