1

我正在尝试了解 Laravel 4 中的路由。我在 StackOverflow 上阅读了一篇很好的帖子,以及一个链接 to beware the route to evil,一篇关于手动指定路由的帖子。我喜欢手动指定我的路由并将 routes.php 作为文档的想法。但是,如果我要指定自己的路线而不是使用,我似乎需要对路线的顺序保持谨慎。Route::resource()如果我在之前有neworcreate路线,show那么由于变量 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')); 

看来我需要确保dogs/newdogs/{dogs}for new 正确返回之前出现。我不清楚有什么不同或{dogs}有什么不同,(:any)或者{any}我在示例和伪代码中看到了一些不同的用途。我看到这/new{...}路线在更具体的情况之前是一样的,就像 Laravel 4 中的通配符一样?(:...) 是旧方式吗?

顺便说一句,我注意到与我在php artisan routes使用资源路由运行时看到的一些示例不同的命名约定,例如Route::resource('photos', 'PhotosController');用于发布索引以创建新资源的方法和命名路由名为 photos.store 和 @店铺。链接到表单以创建新资源的方法和命名路径是 photos.create 和 @create。那是 Laravel 4 的东西还是其他框架中的约定?

4

1 回答 1

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

上面的 url 在狗段之后需要一个参数。例如:http://laravel.com/dogs/xyz,http://laravel.com/dogs/new

在狗 url 段之后,Laravel 将接受任何内容。因此,您的另一个路由将永远不会为 route 参数执行。

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 回答