2013-02-15 2 views
5

Я изучал, как программировать приложения, используя фреймворк Mojolicious, и я в тупике, почему вы используете имена маршрутов. Например, маршрут мог бы сказатьКакова цель названия маршрута в mojolicious?

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

Но какова цель параметра имени? Я новичок в веб-фреймворках, поэтому, возможно, у этого есть тривиальный ответ.

ответ

16

Именование маршрута позволяет вам ссылаться позже, если вы хотите динамически генерировать URL. С вашим примером, вы можете сделать это в коде:

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

и $link будут автоматически заполняться с URL, заканчивающейся в /cities/new. Вы можете получить фантазию, если ваш маршрут имеет динамические части. Например:

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

Тогда вы можете создать URL, как

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

И $link бы в конечном итоге с /cities/newyork.

Это тривиальные примеры, но вы можете создавать довольно сложные вещи, как только ваши маршруты станут более активными.

Если вы не указали маршрут, он получит имя по умолчанию, которое является просто конкатенацией буквенно-цифровых символов. Это может стать утомительным для длинных маршрутов, чтобы вы могли использовать имена, чтобы их сокращать.

См. Также Named Routes в документации Mojolicious.

Смежные вопросы