grid = $grid; $grid->filter(function (Grid\Filter $filter) { // $filter->panel(); // $filter->expand(); }); $this->controller = $controller; if (request('in_iframe')) { $grid->model()->setConstraints([ 'in_iframe' => 1 ]); } GridHeader::gridHeader($grid); } public function columnId() { $this->grid->column('id', 'ID')->sortable(); return $this; } public function columnIdDesc() { $this->grid->column('id', 'ID')->sortable(); $this->grid->model()->orderByDesc('id'); return $this; } public function disableAll() { $this->grid->disableCreateButton(); $this->grid->disableBatchActions(); $this->grid->disableDeleteButton(); $this->grid->disableEditButton(); $this->grid->disableQuickEditButton(); $this->grid->disableViewButton(); // $this->grid->disableBatchActions(); return $this; } /** * * @param $field * @param $view * @return $this */ public function columnView($field, $view, $label = '') { $this->grid->column($field, $label)->view($view); return $this; } public function columnImg($field, $width = 100, $hei = 100, $label = '') { $this->grid->column($field, $label)->display(function ($p2) { // dump($p2); return Img::img2imgurl($p2); })->image('', $width, $hei); } public function columnExpand($field, $fields = [], $label = '') { $controller = $this->controller; $this->grid->column($field, $label)->expand(function (Grid\Displayers\Expand $exped) use ($fields, $controller) { // dump(func_get_args()); $headers = [ 'admin.kv.name', 'admin.kv.value', ]; $data = []; // $exped->row; // dd($exped); foreach ($fields as $f) { $data[] = [ $controller->_label($f), $exped->row->$f ]; } return Table::make($headers, $data); }); } /** * 翻译 字段内容 * * @param $field * @return void */ public function columnTranslation($field, $label = '') { $this->grid->column($field, $label)->display(function ($value, $column, $controller) { // dd(func_get_args()); /** * @var AdminController $controller */ return $controller->_translation('key.' . $value); }, $this->controller);; } /** * 展示的时候除以100 * * @param string $field * @return void */ public function columnc100($field, $label = '') { $this->grid->column($field, $label)->display(function ($p2) { return $p2 / 100; }); } public function columnc1000($field, $label = '') { return $this->grid->column($field, $label)->display(function ($p2) { return $p2 / 1000; }); } /** * 展示 时间戳 * * @param string $field * @return void */ public function columnAt($field, $label = '') { $this->grid->column($field, $label)->display(function ($p2) { return date(\DateTime::W3C, $p2); }); } public function columnAtd($field, $label = '') { $this->grid->column($field, $label)->display(function (/* \Carbon\Carbon*/ $p2) { if (!$p2) { return null; } // dd($p2); return $p2->format(CarbonInterface::DEFAULT_TO_STRING_FORMAT); })->width(105); } /** * 使用枚举展示 * * @param $field * @param $enmu * @return $this */ public function columnUseing($field, $enmu, $label = '') { $this->grid->column($field, $label)->use($enmu); return $this; } public function columnUsingVk($field, $enmu, $label = '') { $res = array_flip($enmu); // dd($res); return $this->grid->column($field, $label)->using($res); } public function columnUsingkv($field, $enmu, $label = '') { // dump($enmu); return $this->grid->column($field, $label)->using($enmu); } /** * 使用枚举展示.new * * @param $name * @param array $keys * @return Grid\Column */ public function fieldUseing($name, array $keys, $label = '') { return $this->grid->column($name, $label)->using($this->useing($name, $keys)); } /** * 使用lab * * @param $name * @param array $keys * @return Grid\Column */ public function fieldLable1($name, $label = '') { $c = $this->controller; return $this->grid->column($name, $label)->display(function ($value, Grid\Column $column) use ($c) { // $list = explode(',',$c) $list = []; foreach ($value as $item) { // dd($this); $list[] = $c->_option($column->getName() . '-' . $item); } return $list; })->label(); } /** * 模型字段展示-cats * * @param $name * @param $default * @param $label * @return Grid\Column * @throws \Exception */ public function columnModelCats($name, $default = null, $label = '', $edit = false) { $cates = $this->grid->model()->repository()->model()->getCasts(); $enmu = $cates[$name] ?? ""; if ($enmu === '') { throw new \Exception("$name is not a model casts"); } $values = $enmu::getValueDescription(); if ($edit) { $res = $this->grid->column($name)->display(function ($value) use ($values, $default) { if (is_null($value)) { return $default; } if ($value instanceof \UnitEnum) { $value = $value->value(); } return $value; })->radio($values); } else { $res = $this->grid->column($name, $label)->display(function ($value) use ($values, $default) { if (is_null($value)) { return $default; } if ($value instanceof \UnitEnum) { $value = $value->value(); } return Arr::get($values, $value, $default); }); } return $res; } }