Php Laravel 5.2资源路由覆盖默认操作
我正在使用Laravel资源控制器构建一个模拟API,在调用get create时尝试覆盖默认的Laravel资源路由之前,所有这些都可以正常工作,但Laravel根本不接受覆盖。文件规定如下: 如果需要在默认资源路由之外向资源控制器添加其他路由,则应在调用Route::resource之前定义这些路由;否则,资源方法定义的路由可能会无意中优先于补充路由: 在我的代码中,我有以下内容: routes.phpPhp Laravel 5.2资源路由覆盖默认操作,php,laravel,laravel-5,laravel-5.2,Php,Laravel,Laravel 5,Laravel 5.2,我正在使用Laravel资源控制器构建一个模拟API,在调用get create时尝试覆盖默认的Laravel资源路由之前,所有这些都可以正常工作,但Laravel根本不接受覆盖。文件规定如下: 如果需要在默认资源路由之外向资源控制器添加其他路由,则应在调用Route::resource之前定义这些路由;否则,资源方法定义的路由可能会无意中优先于补充路由: 在我的代码中,我有以下内容: routes.php Route::group(['prefix' => 'api/v1', 'midd
Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function () {
Route::get('test/create', 'V1\Universal\TestController@create2');
Route::resource('test', 'V1\Universal\TestController');
});
TestController.php
public function create2()
{
return "create 2 override function";
}
public function create()
{
return "create default function";
}
调用API/API/v1/test/create时,它总是触发create()方法,而不是create2()方法。根据Laravel文档,我的自定义附加路线应优先于资源之前定义的路线
有什么想法吗?如果您想覆盖资源路由,请尝试在
Route::resource
之后添加它们。文档中的引用说明了如何将路由添加到资源路由,而不是如何覆盖它们:
如果有必要向资源添加额外的路由
控制器超出默认资源路由,您应该定义这些路由
调用Route::resource之前的路由;否则,路线
由资源方法定义的可能会无意中优先
超过你的补充路线
除参数外,您还可以使用:
Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function () {
Route::get('test/create', 'V1\Universal\TestController@create2');
Route::resource('test', 'V1\Universal\TestController', ['except' => ['create']]););
});
在这种情况下,Route::resource
将不会创建create
路由