model()->where('agent_id', Admin::user()->id)->orderBy('sort')->orderBy('id', 'DESC'); $grid->column('id')->sortable(); $grid->column('display')->using(admin_trans('advertising.options.display')); $grid->column('title'); $grid->column('picture')->image('', 60, 60); $grid->column('type')->using(admin_trans('advertising.options.type')); $grid->column('url'); $grid->column('status')->switch(); $grid->column('sort')->editable()->sortable()->width(120); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('id')->width(2); $filter->equal('display')->select(admin_trans('advertising.options.display'))->width(2); $filter->like('title')->width(3); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Advertising(), function (Show $show) { //不允许查看非自己的数据 if ($show->model()->agent_id != Admin::user()->id) { Admin::exit('数据不存在'); } $show->field('id'); $show->field('display')->using(admin_trans('advertising.options.display')); $show->field('title'); $show->field('picture')->image('', 80, 80); $show->field('type')->using(admin_trans('advertising.options.type')); $show->field('url'); $show->field('status')->using(['禁用', '启用']); $show->field('sort'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Advertising(), function (Form $form) { //不允许查看非自己的数据 if ($form->isEditing() && $form->model()->agent_id != Admin::user()->id) { return $form->response()->error('数据不存在'); } $form->display('id'); $form->select('display') ->options(admin_trans('advertising.options.display')) ->default(0) ->required(); $form->text('title') ->help('主要用于后台显示,方便管理') ->required(); $form->image('picture') ->required()->removable(false)->uniqueName() ->help('轮播图大小:750*360;横屏广告大小:750*230;产品列表内嵌广告建议跟产品图片大小一致'); $form->select('status') ->options(['禁用', '启用']) ->default(1) ->required(); $form->radio('type', '链接类型') ->options(admin_trans('advertising.options.type')) ->value(0)->default(0) ->when(0, function (Form $form) { $form->text('url-0', '内部页面地址') ->customFormat(fn() => $this->type == 0 ? $this->url : '') ->help('格式如下:
产品详情页:/pages/goodsDetail/index?goods_id=产品ID
文章详情页:/pages/notice/article?article_id=文章ID
公告详情页:/pages/notice/notice?notice_id=公告ID
专题活动页:/pages/activityList/index?special_id=专题ID'); }) ->when(1, function (Form $form) { $form->url('url-1', '链接到网址') ->placeholder('如:https://www.baidu.com/') ->customFormat(fn() => $this->type == 1 ? $this->url : ''); }) ->required(); $form->text('sort')->default(255)->required(); })->saving(function (Form $form) { //不允许修改非自己的数据 if ($form->isEditing() && $form->model()->agent_id != Admin::user()->id) { return $form->response()->error('数据不存在'); } //将null字段设置为空值,防止插入数据库出错 foreach ($form->input() as $k => $v) { if (is_null($v)) { $form->$k = ''; } } //处理特殊字段 $form->hidden(['agent_id', 'url']); $form->agent_id = Admin::user()->id; $form->status = $form->status ? 1 : 0; $form->url = $form->{'url-' . $form->type}; $form->deleteInput(['url-0', 'url-1']); //不允许编辑的字段 $form->ignore(['id', 'created_at', 'updated_at']); })->deleting(function (Form $form) { //不允许删除非自己的数据 if (array_filter($form->model()->toArray(), fn($v) => $v['agent_id'] != Admin::user()->id)) { return $form->response()->error('数据不存在'); } }); } }