首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8:路由

Laravel 8:路由
EN

Stack Overflow用户
提问于 2021-06-16 10:42:02
回答 1查看 59关注 0票数 0

在Laravel 8中是否可以不为类中的方法指定路由,也就是说,使它们能够自动工作?

假设有一个类CreateController和方法

代码语言:javascript
复制
function doc() {...}

function pdf() {...}

function xls() {...}

也就是说,当在表单site.com/create/doc的地址访问url时,它计算出类CreateController的方法doc

或者没有这样的可能性,您必须为每个方法注册一条路由,即

代码语言:javascript
复制
Route::get('/create/doc', 'CreateController@doc');
Route::get('/create/pdf', 'CreateController@pdf');
Route::get('/create/xls', 'CreateController@xls');
...
EN

回答 1

Stack Overflow用户

发布于 2021-06-16 12:15:09

不是直接在第二个字符串参数中,而是将此参数设置为回调函数:

代码语言:javascript
复制
Route::get('/create/{type}', function(string $type) {
    return (new CreateController)->{$type}();
})->where('type', 'doc|pdf|xls');

如果希望允许所有方法作为类型并保持其动态,则可以在不编辑路由的情况下从控制器中添加或删除:

代码语言:javascript
复制
$class = new ReflectionClass(CreateController::class);
$methods = $class->getMethods(ReflectionMethod::IS_PUBLIC);
Route::get('/create/{type}', function(string $type) {
    return (new CreateController)->{$type}();
})->where('type', implode('|', $methods));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68001129

复制
相关文章

相似问题

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