2011-05-05 15 views
6

में मार्गों मैं अपने Mojolicious अनुप्रयोग में "डायनामिक" मार्गों की तरह कुछ को लागू करना चाहते हैं। > '/ URL' - '/ उर्फ': मैं कुछ पूर्व निर्धारित "स्थिर" मार्गों और यूआरएल उपनाम के साथ एक डीबी तालिका है। अब मैं फ्लाई ऑन द फ्लाई परिभाषित कर रहा हूं और ऐसा लगता है:"गतिशील" Mojolicious

before_dispatch => sub { 
    my ($self, $controller) = @_; 
    my $path = $controller->tx->req->url->path->to_string; 
    if (my $alias = $controller->app->model->alias->find({ alias => $path })) { 
    my $match = Mojolicious::Routes::Match->new(get => $alias->{uri}); 
    my $routes = $controller->app->routes; 
    $match->match($routes); 
    $routes->route($path)->to($match->captures); 
    } 

लेकिन क्या कोई बेहतर तरीका है?

उत्तर

4

आप क्रम जो (हालांकि आप शायद की जाँच करनी चाहिए एक मार्ग यह अधिभावी से पहले से मौजूद है तो) एक अच्छा दृष्टिकोण लगता है पर मार्गों जोड़ रहे हैं। आप इसे एक वाइल्डकार्ड प्लेस होल्डर से किसी मोहक रूप में भी कर सकता है तो थोड़ी देर बाद पर अनुरोध handoff।

http://mojolicio.us/perldoc/Mojolicious/Guides/Routing#Wildcard_Placeholders

$r->get('/(*everything)')->to('mycontroller#aliases'); 
+0

आप एक मार्ग से मौजूद है, तो अगर आप अपने मार्गों सूची में सबसे नीचे मोहक डाल जांच करने की जरूरत नहीं है। मार्गों क्रमिक रूप से करने की कोशिश की जाती है और पहले मैच प्रयोग किया जाता है। –

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