2013-02-15 9 views
5

私はMojoliciousフレームワークを使ってアプリケーションをプログラミングする方法を学んでいましたが、なぜルート名を使うのか困惑しています。例えば、経路はmojoliciousのルート名の目的は何ですか?

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

と言うことができますが、名前パラメータの目的は何ですか?私はWebフレームワークに慣れていないので、これは簡単な答えです。

答えて

16

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'); 

はその後、/cities/newyorkで終わるでしょう

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

そして$linkのようなURLを生成することができます。

これは簡単な例ですが、経路が複雑になると、かなり複雑なものを作り上げることができます。

ルートに名前を付けないと、デフォルト名が取得されます。デフォルト名は、その中の英数字の連結だけです。それは長いルートのために退屈になるので、名前を短縮して使用することができます。

MojoliciousのドキュメントのNamed Routesも参照してください。

関連する問題