[已解决]Dcat admin 在有多个路由的参数下,如何获得指定参数
1. 环境
Laravel 9.22 / PHP 8.1
Dcat Admin: v2.2.2-beta
2. 问题描述?
在路由有多个参数的情况下, 如何在控制器的 detail 和 edit 部分,使用指定参数。
路由定义
路由打印
3. 您期望得到的结果?
这部分的 ID 应为路由中的 balance 参数
4. 您实际得到的结果?
实际获得的是 client 参数。
5. 解决方法
回复链接
首先需要 use HasNestedResource
use Dcat\Admin\Http\Controllers\HasNestedResource;
class BalanceController extends AdminController
{
use HasNestedResource;
之后添加一个构造函数
public function __construct()
{
$id = request()->route('你的路由参数');
$this->setNestedResourceId($id);
}
如果不添加构造函数,可能会在 Update 时,ID 不匹配的问题。
嵌套资源控制器可以试下这个
trait
能否解决你的问题GitHub PR: 支持嵌套资源控制器 Nested Resources
当使用嵌套资源控制器时,默认行为总是获取父级模型的 ID。
嵌套资源 Nested Resources
⚠️ 暂不支持 浅层嵌套 Shallow Nesting
访问
/photos/1/comments/2
是会错误的展示id
为1
的comment
。现在只需添加
HasNestedResource
trait
到你的控制器,即可自动纠正此问题。你还可以在构造函数中手动设置模型 ID
或者手动设置路由参数的名称