laravel backpack url 中包含多个参数时,编辑某条数据时数据错乱

更新日期: 2019-08-08 阅读次数: 4317 字数: 193 分类: backpack

问题的现象是这样的:

例如:

编辑 shop id 为 3 的店铺中,商品 id 为 11 的商品

https://www.xxx.com/admin/shop/3/products/11/edit

但是 backpack 自带的编辑页面,永远返回的是商品 id 为 3 的商品。

也就是说,编辑时,永远取的是链接中的第一个参数作为 model 的 ID。

只需要在 CrudController 中加入 edit,destroy 的代码,以覆盖父函数的实现即可。

public function edit($id) {
	$id = request()->route('product');
	return parent::edit($id);
}

public function destroy($id){
	$id = request()->route('product');
	$del_Product = Product::where('id', $id)->first();

	if ($del_Product != null) {
		$del_Product->is_deleted = 1;
		$del_Product->save();
		return "删除成功";
	} else {
		return false;
	}
}

这里有个技巧,即 backpack 默认会取最后一个单词的单数形式为变量名。

所以, product 为商品 id 的变量。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式