Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl mojolicious中路线名称的用途是什么?_Perl_Routes_Mojolicious - Fatal编程技术网

Perl mojolicious中路线名称的用途是什么?

Perl mojolicious中路线名称的用途是什么?,perl,routes,mojolicious,Perl,Routes,Mojolicious,我一直在学习如何使用Mojolicious框架编写应用程序,我很难理解为什么要使用路由名称。例如,一条路线可以说 $r->route('/cities/new') ->via('get') ->to(controller => 'cities', action => 'new_form') ->name('cities_new_form'); 但是name参数的用途是什么?我对web框架还不熟悉,所以这可能有一个简单的答案

我一直在学习如何使用Mojolicious框架编写应用程序,我很难理解为什么要使用路由名称。例如,一条路线可以说

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

但是name参数的用途是什么?我对web框架还不熟悉,所以这可能有一个简单的答案。

如果您想动态生成URL,命名路由允许您稍后引用它。在您的示例中,您可以稍后在代码中执行此操作:

my $link = $self->url_for( 'cities_new_form' )
$link
将自动填充以
/cities/new
结尾的URL。如果你的路线有动态的部分,你可以想象。例如:

$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
结束

这些都是微不足道的例子,但一旦你的路线变得更加复杂,你就可以构建相当复杂的东西

如果不命名路由,它将获得一个默认名称,该名称只是其中字母数字字符的串联。对于长路线,这可能会变得单调乏味,因此您可以使用名称来缩写它们

另请参见Mojolicous文档中的