我正在尝试了解Laravel 4中的路由。我读了一篇很好的post here on StackOverflow和一个指向beware the route to evil的链接,这是一篇关于手动指定路线的帖子。我喜欢手动指定路由并将routes.php作为文档的想法。但好像我需要谨慎对待我的路线的顺序,如果我要自己指定,而不是使用Route::resource()
如果我之前的new
或create
路线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/new
在dogs/{dogs}
之前才能正确返回。我不清楚{dogs}
做什么或与(:any)
或{any}
有什么不同我在示例和伪代码中看到了一些不同用途。我看到/new
与{...}
相同,当路线位于更具体的{}之前,就像Laravel 4中的通配符一样? (:...)是旧的方式吗?
顺便说一句,我注意到了一些不同的命名约定,当我用php artisan routes
这样的资源路径运行Route::resource('photos', 'PhotosController');
时,我看到的一些例子的命名约定用于post到index的方法和命名路由创建一个新资源名为photos.store和@store。用于创建新资源的表单的链接的方法和命名路由是photos.create和@create。那是Laravel在其他框架中的4件事还是惯例?
答案 0 :(得分:0)
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => 'DogsController@show'));
以上网址预计狗段后的参数。
例如:http://laravel.com/dogs/xyz
,http://laravel.com/dogs/new
Route::get('dogs/new', array('as' => 'new_dog', 'uses' => 'DogsController@create'));
有关路线参数的更多信息:
http://laravel.com/docs/routing#route-parameters
资源控制器
Laravel
和Ruby on rails
支持资源完整路由。我认为,Tailor从Ruby on rails上借用了资源完整路由的想法。
如果使用资源控制器,将生成以下路由:
index
create
store
update
show
edit
destroy