Dcat Admin中,关于form的动态显示以及表单工具的使用,遇到一些疑问
1. 运行环境#
windows 11
1). 当前使用的 Laravel 版本?#
Laravel Framework 7.30.6
2). 当前使用的 php/php-fpm 版本?#
PHP 版本:8.0
3). 当前系统#
Windows 11
4). 业务环境#
本地开方环境
5). 相关软件版本#
Nginx/mysql/php8.0
2. 问题描述?#
我现在想做一个商城,问题所在位置是商城 “规格” 部分:
页面大概是这个样子!
规格内容,是点击添加按钮,动态添加的。现在遇到了这么几个问题:
1. 工具表单 (Dcat\Admin\Widgets\Form)
工具表单能够代替原来的控制器 Controller 中的 form 方法来应用在 funciton create () 和 funciton edit () 中么?
public function create(Content $content)
{
Admin::script(
<<<JS
$(document).on('click','.add-spec',function(){
Dcat.success('更新成功');
});
JS
);
$content
->title('新建商品')
->description('新建商品')
->body(new Card(Goods_detail::make()));
return $content
->header('新建商品');
}
public function edit($id, Content $content)
{
$goods = (new ShoppingGood)->getGood($id);
return $content
->header('修改商品-'.$goods->spu)
->description($goods->desc)
->body(Goods_detail::make());
}
2. 因为规格是动态添加的,所以编辑页面的时候,肯定希望创建的规格再显示出来。按着之前的普通的处理办法,肯定是控制器获取数据,然后在 view 页面循环输出显示内容。但是如果是使用 Dcat 的 form 功能,这块该如何处理呢?我看现在的编辑功能,应该是传了 id 以后,系统把数据库中查出的表数据,和 form 的字段对应,匹配值,但是我现在需要的业务逻辑显然要比这个复杂,我的数据来源于多个表(完整规格保存于多个表,每个表记录规格的不同信息),肯定需要一些我自己的业务逻辑处理,这块逻辑代码,应该写在哪里呢?要抛弃
public function update($id)
{
return $this->form()->update($id);
}
这样的写法,自己在 update 中处理逻辑,通过 model 进行数据的更新保存么?
3. 对于 Dcat 来说,其中的 form,我可以动态显示内容么?就比如,我现在创建了 “颜色”,“尺码” 两个规格,保存之后,编辑的时候,我希望页面显示出这两个规格的信息,还是说,我必须自定义个 view 页面,才能实现这个功能呢 ```php
public function edit($id, Content $content)
{
$goods = (new ShoppingGood)->getGood($id);
return $content
->header (‘修改商品 -‘.$goods->spu)
->description($goods->desc)
->body($this->form()->edit($id));
}
推荐文章: