Какова цель названия маршрута в mojolicious?

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

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

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


person user1876508    schedule 15.02.2013    source источник


Ответы (1)


Имя маршрута позволяет ссылаться на него позже, если вы хотите динамически генерировать 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.

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

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

См. также Именованные маршруты в документации Mojolicious.

person friedo    schedule 15.02.2013