1

私は Laravel 4 でルーティングを理解しようとしています。ここで StackOverflow に関する良い記事と、 route to bewareへのリンク、手動でルートを指定することに関する記事を読みました。ルートを手動で指定し、routes.php をドキュメントとして機能させるというアイデアが気に入っています。しかし、使用する代わりに独自のルートを指定する場合は、ルートの順序に注意する必要があるようですRoute::resource()If I have the newor createroute before the showthen I will not be routed to the show because the variable inうり?ルートが定義される順序は重要ですよね?

// This will not work if I try and browse to dogs/new
Route::get('dogs', array('as' => 'dogs', 'uses' => 'DogsController@index'));  
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => 'DogsController@show'));
Route::get('dogs/new', array('as' => 'new_dog', 'uses' => 'DogsController@create')); 

new が正しく返されるようにするには、dogs/newが前に来るようにする必要があるようです。dogs/{dogs}{dogs}が異なるのか、(:any)または{any}例や疑似コードでいくつかの異なる使用法を見てきました。Laravel 4 のワイルドカードのように、より具体的な {} の前にルートがある場合/newと同じだと思いますか? {...}(:...) は古い方法ですか?

余談ですが、新しいリソースを作成するためのインデックスへの投稿のメソッドと名前付きルートのphp artisan routesようなリソースルートで実行したときに見たいくつかの例とは異なる命名規則に気付いたのは、photos.store と @ という名前です。Route::resource('photos', 'PhotosController');お店。新しいリソースを作成するためのフォームへのリンクのメソッドと名前付きルートは、photos.create と @create です。それは Laravel 4 のものですか、それとも他のフレームワークの規則ですか?

4

1 に答える 1

0
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => 'DogsController@show'));

上記の URL では、dogs セグメントの後にパラメーターが必要です。例: http://laravel.com/dogs/xyzhttp://laravel.com/dogs/new

Dogs url セグメントの後、Laravel は何でも受け入れます。そのため、別のルーティングがルート パラメーターに対して実行されることはありません。

Route::get('dogs/new', array('as' => 'new_dog', 'uses' => 'DogsController@create'));

ルート パラメータの詳細:

http://laravel.com/docs/routing#route-parameters

リソース コントローラー LaravelRuby on railsサポート リソースのフル ルーティング。Tailor は Ruby on rails からリソース フル ルーティングのアイデアを借りていると思います。

リソース コントローラーを使用すると、次のルートが生成されます。

index
create
store
update
show
edit
destroy

http://guides.rubyonrails.org/routing.html

http://laravel.com/docs/controllers#resource-controllers

于 2013-12-16T06:22:53.953 に答える