header(' Product Management') ->description('all') ->breadcrumb(['text'=>'Product Management','url'=>'']) ->body($this->grid()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(BaseProduct::with(['baseProductCategory','images']), function (Grid $grid) { $grid->column('id','ID')->sortable(); $grid->column('title'); $grid->column('sku'); $grid->column('base_product_category.name','Category Name'); $grid->column('issuance_date'); $grid->column('images')->display(function ($images) { $images = $images->toArray(); $dataImages = array_column($images, 'image_url'); return CommonHelper::displayImage($dataImages,150); }); $grid->column('order')->orderable(); $grid->column('is_pinned')->switch(); $grid->column('enabled')->switch(); $grid->column('created_at'); $grid->column('updated_at')->sortable(); // 筛选 $grid->filter(function (Grid\Filter $filter) { $filter->equal('sku'); $filter->like('title'); $filter->equal('category_id','Category')->select(BaseProductCategory::selectOptions()); $filter->equal('enabled', 'enabled')->select([ 1 => 'Yes', 0 => 'No', ]); }); //排序 $grid->model()->orderBy("is_pinned",'desc')->orderBy("order",'desc'); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, BaseProduct::with(['baseProductCategory','images']), function (Show $show) { $show->field('id'); $show->field('title'); $show->field('keywords'); $show->field('description'); $show->field('sku'); $show->field('base_product_category.name','Category Name'); $show->field('issuance_date'); $show->field('parameters')->as(function ($items) { if (is_array($items)) { // 创建表格的表头 $table = ''; $table .= ''; // 遍历数组并将数据填充到表格中 foreach ($items as $item) { $table .= ''; $table .= ''; // 商品名称 $table .= ''; // 数量 $table .= ''; } $table .= '
keyvalue
' . $item['key'] . '' . $item['value'] . '
'; return $table; } return ''; // 当没有数组数据时 })->unescape(); $show->field('images')->as(function ($images) { // 开始生成 HTML $dataImages = array_column($images, 'image_url'); return CommonHelper::displayImage($dataImages,150); })->unescape(); $show->field('content'); $show->field('created_at'); $show->field('updated_at'); $show->field('order'); $show->field('enabled')->using([ '0' => 'No', // 显示的状态名称 '1' => 'Yes', ]); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(BaseProduct::with('images'), function (Form $form) { $form->display('id'); $form->select('category_id', 'Category Name') ->options(BaseProductCategory::selectOptions()) ->required(); $form->text('title')->required(); $form->text('keywords'); $form->textarea('description'); $form->text('sku')->required(); $form->date('issuance_date'); $form->table('parameters','Parameters', function (Form\NestedForm $table) { $table->text('key')->required(); $table->text('value')->required(); }); // 多图上传 $form->multipleImage('images', 'images') ->sortable() // 可拖动排序 ->removable() // 可移除图片 ->autoUpload() // 自动上传 ->uniqueName() ->accept('jpg,png,gif,jpeg,webp') ->move('images/product/'.date("Ymd")) ->customFormat(function () { // 数据格式化为数组['1.jpg','2.jpg'] 编辑时用到 return array_column($this->images, 'image_url'); }) ->saving(function ($images) { return array_map(function($image) { return ['image_url' => $image]; }, $images); }); $form->editor('content'); $form->switch('is_pinned')->default(0); $form->switch('enabled')->default(1); //插入JS $this->addParametersJs(); }); } /* * 以json型式返回产品参数 */ public static function parameter(Request $request) { $id = $request->query('q'); $content = BaseProductCategory::getParameter($id); return $content; } /** * 分类与参数联动JS * @return void */ private function addParametersJs() { $prefix = config('admin.route.prefix'); //插入JS Admin::script( << 0) { $.ajax({ url: '/{$prefix}/base-product/parameter', data: { q: category_id}, dataType: 'json', type: 'GET', // GET success: function(data) { // success if (Array.isArray(data) && data.length === 0) { return null; } // 动态添加新数据到表格 $.each(data, function(index, item) { $(".has-many-table-parameters").find(".add").click(); fill_param(item.key,item.value); }); }, error: function(error) { // 错误时执行的代码 console.log('error:', error); } }); } }); JS ); } }