Files
water_new/modules/Mall/Http/Controllers/Admin/SpecController.php
2023-03-08 09:16:04 +08:00

81 lines
2.0 KiB
PHP

<?php
namespace Modules\Mall\Http\Controllers\Admin;
use Encore\Admin\Form;
use Encore\Admin\Form\NestedForm;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Illuminate\Routing\Controller;
use Modules\Mall\Models\Goods;
use Modules\Mall\Models\GoodsSpec;
class SpecController extends Controller
{
public function index(Content $content, Goods $good): Content
{
return $content
->header($good->name)
->description('属性列表')
->body($this->grid($good));
}
public function grid($good): Grid
{
$grid = new Grid(new GoodsSpec());
$grid->model()
->where('goods_id', $good->id)
->withCount('values');
$grid->column('name', '属性名称');
$grid->column('values_count', '属性值数量')
->link(function () use ($good) {
return route('admin.mall.goods.specs.values.index', [$good, $this]);
}, '_self');
return $grid;
}
public function create(Content $content, Goods $good): Content
{
return $content
->header($good->name)
->description('属性列表')
->body($this->form($good));
}
public function form($good): Form
{
$form = new Form(new GoodsSpec());
$form->text('name', '属性名称');
$form->hidden('goods_id')->value($good->id);
$form->hasMany('values', '属性值列表', function (NestedForm $form) {
$form->text('value', '属性值');
});
return $form;
}
public function store(Goods $good)
{
return $this->form($good)->store();
}
public function edit(Content $content, Goods $good, GoodsSpec $spec): Content
{
return $content
->header($good->name)
->description('属性列表')
->body($this->form($good)->edit($spec->id));
}
public function update(Goods $good, GoodsSpec $spec)
{
return $this->form($good)->update($spec->id);
}
}