首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel5.2资源路由覆盖默认操作

Laravel5.2资源路由覆盖默认操作
EN

Stack Overflow用户
提问于 2016-05-24 15:27:24
回答 1查看 522关注 0票数 2

我正在构建一个使用Laravel资源控制器的模拟API,直到我尝试在调用get创建时重写默认的Laravel资源路由,但Laravel只是不接受覆盖。这些文件规定如下:

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

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

routes.php

代码语言:javascript
运行
复制
Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function () {   
    Route::get('test/create', 'V1\Universal\TestController@create2');
    Route::resource('test', 'V1\Universal\TestController');
});

TestController.php

代码语言:javascript
运行
复制
public function create2()
{
    return "create 2 override function";
}


public function create()
{        
    return "create default function";
}

当调用API /api/v1/test/create时,它总是触发create()方法,而不是create2()方法。根据Laravel文档,我的自定义附加路由应该优先,因为它是在资源之前定义的。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-24 15:31:11

如果要对资源路由进行过度记录,则要尝试在Route::resource之后添加它们。文档中的引用说明了如何将路由添加到资源路由,而不是说明如何覆盖这些路由:

如果有必要在默认资源路由之外向资源控制器添加附加路由(),则应在调用路由::之前定义这些路由;否则,由资源方法定义的路由可能无意中优先于补充路由。

您还可以使用except参数:

代码语言:javascript
运行
复制
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路由。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37417877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档