在Laravel 4中指定Restful路由所需的顺序?

时间:2013-12-16 03:16:33

标签: php rest laravel-4 routing laravel-routing

我正在尝试了解Laravel 4中的路由。我读了一篇很好的post here on StackOverflow和一个指向beware the route to evil的链接,这是一篇关于手动指定路线的帖子。我喜欢手动指定路由并将routes.php作为文档的想法。但好像我需要谨慎对待我的路线的顺序,如果我要自己指定,而不是使用Route::resource()如果我之前的newcreate路线show然后由于URI中的变量,我不会被路由到节目?定义路由的顺序很重要吗?

// 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}之前才能正确返回。我不清楚{dogs}做什么或与(:any){any}有什么不同我在示例和伪代码中看到了一些不同用途。我看到/new{...}相同,当路线位于更具体的{}之前,就像Laravel 4中的通配符一样? (:...)是旧的方式吗?

顺便说一句,我注意到了一些不同的命名约定,当我用php artisan routes这样的资源路径运行Route::resource('photos', 'PhotosController');时,我看到的一些例子的命名约定用于post到index的方法和命名路由创建一个新资源名为photos.store和@store。用于创建新资源的表单的链接的方法和命名路由是p​​hotos.create和@create。那是Laravel在其他框架中的4件事还是惯例?

1 个答案:

答案 0 :(得分:0)

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

以上网址预计狗段后的参数。 例如:http://laravel.com/dogs/xyzhttp://laravel.com/dogs/new

狗狗网段之后,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