卸载了 Dingo 以后,Laravel 的隐式路由模型绑定好像无效了?

我有一个项目,API 之前是用 Dingo 写的,最近我想把 Dingo 干掉,用 Laravel 原生的 Resource 搞,中间也是遇到了种种问题,都解决了,直到我遇到目前这个问题:Laravel 的隐式路由模型绑定没效果了。

下图为我在已注册的路由表里找到的,说明路由注册是没问题的:

路由

下图是路由对应的方法,我在方法里直接打印 $api

卸载了 Dingo 以后,Laravel 的隐式路由模型绑定好像无效了?

然后发起请求:xxx.com/api/apis/43,按道理来说,Laravel 应该自动找到 id 为 43 的这条记录,然后打印结果应该是这条记录,结果却是空的:

卸载了 Dingo 以后,Laravel 的隐式路由模型绑定好像无效了?

这次我把 $api->toArray() 打印出来看看:

修改方法

修改方法后的打印结果

再尝试一下,把路由模型绑定给去掉,在方法里直接接收参数:

再次修改方法
再次修改方法

再次修改方法后的打印结果:
再次修改方法后的打印结果

然后我就不明白是哪里出了问题导致这样了。

补充一点: web 路由是正常的,只有 api 的路由不能进行路由模型绑定了。

我应该如何继续跟踪这个问题呢?

小时候,幸福是一件很简单的事;长大了,简单是一件很幸福的事。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
leo
最佳答案

api 路由组缺少 SubstituteBindings 这个中间件

4年前 评论
讨论数量: 2
leo

api 路由组缺少 SubstituteBindings 这个中间件

4年前 评论
月光

@leo 谢谢大佬!一语中的,印象中模模糊糊有这个中间件点印象,但就想不起来问题在哪里,我把 Kernel.php 里的 $middlewareGroup['api'] 里加上 bindings 就好了。

另外想问题一下,放中间件的地方有好多个,比如 Kernel.php 里,还有 RouteServiceProvider.php 里,还有 api.php 路由文件里,想问一下有没有最佳实践的放法?或者某些位置应该放哪种类型的中间件之类的有没有什么说法?

现在这样有好多位置,感觉很混乱,好多位置可以,如果我到处都写,那别人接手不是很乱吗?感觉不 Laravelful。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!