जब मैं एचटीएमएल प्रतिक्रिया शरीर का विश्लेषण करता हूं तो मैं शरीर में पाए गए सभी लिंक के लिए रूट नाम ढूंढना चाहता हूं। मैं अगले कोड स्निपेट का उपयोग करता हूं:
my $url = Mojo::URL->new( $got );
my $method = uc( $url->query->clone->param( "_method" ) || "GET" );
my $c = $t->app->build_controller;
my $m = Mojolicious::Routes::Match->new( root => $t->app->routes );
$m->find( $c => { method => $method, path => $url->path } );
फिर $m->endpoint->name
मुझे मार्ग का नाम देता है।
लेकिन क्या पथ द्वारा मार्ग नाम खोजने का कोई आसान तरीका है?
मैं कुछ ढूंढ रहा हूं: $app->routes->find( "/api/v/users/146/link/7QRgs" )
जो वापस आना चाहिए user_hash_check
क्योंकि मेरे पास अगला मार्ग है:
$guest->get( "/users/:id/link/:hash", "user_hash_check" )->to( "user#hash_check" );
उत्तर:
उत्तर № 1 के लिए -1मुझे केवल एक ही जगह मिली है जहां हम मार्ग से मार्ग पा सकते हैं। अर्थात् Mojolicious :: मार्गों :: मैच तथा ऐसा करने का कोई और तरीका नहीं है
मेरे दिमाग में एक बदसूरत चीज की आपूर्ति करने की आवश्यकता है Mojolicious :: नियंत्रक वस्तु। लेकिन नियंत्रक केवल निर्णय लेने की आवश्यकता है: प्रेषण या प्रेषण नहीं क्योंकि इस निर्णय को करने के लिए इसमें अतिरिक्त जानकारी है: यह जांचने के लिए डेटा है शर्तेँ
जैसा कि मुझे लगता है कि समस्या यह है कि यहां दो चीजें मिश्रित हैं:
- निवेदन
- पथ
तथा खोज दिए गए तर्कों के खिलाफ मिलान किए गए सभी मार्गों को वापस करना चाहिए: पथ और विधि। पसंद चयनकर्ता करता है सरणी परिणाम शायद कैश किया गया था (अब शर्तों के साथ मार्ग कैश नहीं हैं)
फिर डिस्पैचर जांचना चाहिए शर्तेँ प्रत्येक मार्ग के खिलाफ, नहीं मिलान। यहां प्रत्येक शर्त कहा जा सकता है सही नियंत्रक के संदर्भ में और डिफ़ॉल्ट नहीं। और यह ठीक हो जाएगा इस मुद्दे। मार्गों में अधिकांश मामलों में उनके स्वयं के नियंत्रक वर्ग नहीं हैं?
जब तक यह व्यवहार तय नहीं किया जाएगा प्रश्नों का उदाहरण मार्ग खोजने का सबसे अच्छा तरीका है