model()->orderBy('id', 'desc'); $grid->filter(function ($filter) { $filter->column(1 / 2, function ($filter) { $filter->like('title', '文章标题'); $filter->equal('categories.id', '所属分类')->select(Category::selectOptions(function ($model) { return $model->where('status', 1)->whereIn('type', [Category::TYPE_ARTICLE, Category::TYPE_SHOW]); }, '所有分类')); }); $filter->column(1 / 2, function ($filter) { $filter->equal('position', '首页推荐位') ->select(Article::POSITIONS); }); $filter->disableIdFilter(); }); $grid->column('id', '#ID#'); $grid->column('cover', '封面图片')->image('', 100); $grid->column('所属分类')->display(function () { return $this->categories()->pluck('title'); })->label(); $grid->column('title', '文章标题'); $grid->column('sort', '序号'); $grid->status('状态')->switch([ 'on' => ['value' => 1, 'text' => '正常', 'color' => 'primary'], 'off' => ['value' => 0, 'text' => '关闭', 'color' => 'danger'], ]); $grid->column('created_at', '创建时间'); return $grid; } public function form() { $form = new Form(new Article); $form->text('title', '文章标题')->rules('min:2'); $form->belongsToMany('categories', CategorySelectAble::class, __('关联分类')); // $form->text('keywords', '关键词')->rules('nullable'); $form->textarea('description', '内容简介')->rules('max:350'); $form->image('cover', '封面') ->move('images/' . date('Y/m/d')) ->removable() ->uniqueName(); $form->ueditor('content', '文章内容'); $form->number('sort', '序号')->default(0)->rules('required', ['required' => '序号必须填写'])->help('倒序优先'); $form->switch('status', '状态')->default(1); $form->text('url', '外链地址'); $form->select('position', '首页推荐位') ->options(Article::POSITIONS); $form->datetime('created_at', '发布时间'); $form->saved(function ($form) { if ($form->position) { $model = $form->model(); Article::where('position', $form->position) ->where('id', '<>', $model->id) ->update([ 'position' => '', ]); } }); return $form; } public function detail($id) { $show = new Show(Article::findOrFail($id)); $show->field('id', 'ID'); $show->field('title', '标题'); $show->field('content', '内容'); $show->field('created_at'); return $show; } }