Php Laravel 5.2资源路由覆盖默认操作

Php 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

我正在使用Laravel资源控制器构建一个模拟API,在调用get create时尝试覆盖默认的Laravel资源路由之前,所有这些都可以正常工作,但Laravel根本不接受覆盖。文件规定如下:

如果需要在默认资源路由之外向资源控制器添加其他路由,则应在调用Route::resource之前定义这些路由;否则,资源方法定义的路由可能会无意中优先于补充路由:

在我的代码中,我有以下内容:

routes.php

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
路由