2013-02-15 20 views
5

Nauczyłem się programować aplikacje przy użyciu Mojolicious framework i jestem pewien, dlaczego używasz nazw tras. Na przykład trasa może powiedzieć:Jaki jest cel nazwy mojolicowej?

$r->route('/cities/new') 
     ->via('get') 
     ->to(controller => 'cities', action => 'new_form') 
     ->name('cities_new_form'); 

Ale jaki jest cel parametru nazwy? Jestem nowicjuszem w frameworkach internetowych, więc może ta odpowiedź jest banalna.

Odpowiedz

16

Nadawanie nazwy trasie umożliwia odwołanie się do niej później, jeśli chcesz dynamicznie generować URL. Z Twojego przykład, można to zrobić później w kodzie:

my $link = $self->url_for('cities_new_form') 

i $link będą automatycznie wypełniane URL kończącym się w /cities/new. Możesz mieć ochotę, jeśli twoja trasa ma części dynamiczne. Na przykład:

$r->route('/cities/:cityname') 
    ->via('get') 
    ->to(controller => 'cities', action => 'new_form') 
    ->name('cities_new_form'); 

Następnie można wygenerować URL podobnego

my $link = $self->url_for('cities_new_form', cityname => 'newyork'); 

I $link by skończyć z /cities/newyork.

Są to banalne przykłady, ale można zbudować dość skomplikowane rzeczy, gdy trasy będą bardziej zaangażowane.

Jeśli nie podasz nazwy trasy, otrzyma ona domyślną nazwę, która jest po prostu połączeniem znaków alfanumerycznych. To może stać się uciążliwe dla długich tras, dzięki czemu możesz używać nazw, aby je skracać.

Zobacz także Named Routes w dokumentacji Mojolicious.