代码如下:

public function form()
{$form = new Form(new XXX());$form->text('name', '活动名称');$form->text('slug', '活动Slug');if ($form->isEditing()) {$form->datetime('created_at', '创建时间')->readonly();}$form->table('xxx-json', '活动产品', function ($table) {$table->select('product_id', '产品')->options(function ($id) {$product = YYY::find($id);return $product ? $product->pluck('pro_name', 'id') : [];})->ajax('/admin/api/xxx-json');$table->select('type', '权益类型')->options(self::TYPES);$table->number('value', '数值');});// $form->hidden('content');// 必须要有这个,否则会报错content字段不存在\vendor\encore\laravel-admin\src\Form.php Line:900$form->table('content', '权益', function ($table) {$table->select('type', '类别')->options(self::OPTIONS);$table->select('lang', '语言')->options(array_combine(Launch::LANGUAGES, Launch::LANGUAGES));$table->text('value', '值');});$form->datetimeRange('start_time', 'end_time', '活动时间');$form->select('status', '活动状态')->options(XXX::STATUS)->default(XXX::STATUS_VALID);$form->select('style', '按钮样式')->options(XXX::STYLES)->default(XXX::STYLE_MORE);$form->url('redirect', '跳转链接')->required();if ($form->isEditing()) {$form->url('link', '活动链接');}// hook 保存后拿到活动id然后再次保存,没有观察者好用,但是不知道观察者为啥不可用$form->saved(function (Form $form) {$activity = $form->model();$activity->link = vsprintf(config('app.url') . '/share/%s?activity_id=%d', [$activity->slug, $activity->id]);$activity->save();});// 设置创建人$form->hidden('created_by')->default(Admin::user()->id);$form->footer(function ($footer) {// 去掉`查看`checkbox$footer->disableViewCheck();});return $form;
}

编辑的时候展示:

更新代码,需要转换数据为json,并对字段进行一些处理:

public function update(Request $request)
{$activity_id = $request->route()->parameter('activity');// Log::info('更新活动内容: ' . json_encode($request->all(), 320));// 如果存在pk说明是行内编辑if ($request->pk) {$params[request('name')] = request('value');} else {$params = $this->validate($request, self::RULES);// 过滤不需要的参数foreach ($params as $field => $param) {switch ($field) {case 'content':case 'products':$data = array_filter($params[$field], function ($value) {// 只要没被移除的return isset($value['_remove_']) && !$value['_remove_'];});$params[$field] = json_encode($data, 320);break;}}}// dd($params);XXX::where('id', $activity_id)->update($params);return admin_toastr('更新成功!', 'success');
}

模型里面也需要处理一下:

<?phpnamespace App\Model\YYY;use Illuminate\Database\Eloquent\Model;class XXX extends Model
{protected $connection = 'mysql_vip';protected $table = 'vip_activities';public $timestamps = true;// 这里就是设置告诉设置的是json格式protected $casts = ['content' => 'json','products' => 'json',];public const STATUS_VALID = 10;public const STATUS_DELETE = 20;// 状态10:正常,20:删除public const STATUS = [self::STATUS_VALID => '正常',self::STATUS_DELETE => '删除',];// 10:了解更多特权,20:立即体验public const STYLE_MORE = 10;public const STYLE_TRY = 20;public const STYLES = [self::STYLE_MORE => '了解更多特权',self::STYLE_TRY => '立即体验',];protected $fillable = ['name', 'slug', 'products', 'content', 'start_time', 'end_time', 'redirect', 'style', 'link', 'created_by', 'created_at', 'updated_at',];public function scopeHot($query){return $query->where('share_count', ' > ', 100);}public function scopeTrashed($query){return $query->where('status', self::STATUS_DELETE);}public function getContentAttribute($value){// array_values取值是为了避免覆盖return array_values(json_decode($value, true) ?: []);}public function setContentAttribute($value){$this->attributes['content'] = json_encode(array_values($value));}public function getProductsAttribute($value){// array_values取值是为了避免覆盖return array_values(json_decode($value, true) ?: []);}public function setProductsAttribute($value){$this->attributes['products'] = json_encode(array_values($value));}
}

laravel-admin表格table创建与展示相关推荐

  1. laravel admin 根绝model创建控制器路由命令

    php artisan admin:make ChannelsController --model=App\Models\ChannelsApp\Admin\Controllers\ChannelsC ...

  2. 手机端自适应表格table样式如何写

    有时候我们的网页需要展示一些表格的内容,在pc端是很好控制它的展现方式的,但是到移动端就非常难控制了,那么该怎么做呢? 比如上图就是没控制好的移动端的表格table样式,展示非常的凌乱. 这个就是写好 ...

  3. 表格table标签的属性及使用方式

    表格 table 创建表格 在HTML网页中,要想创建表格,就需要使用表格相关的标签.创建表格的基本语法格式如下: <table><tr><td>单元格内的文字&l ...

  4. 【ArcGIS Pro二次开发】(14):使用字典(Dictionary)创建表格(Table)

    在规划工作中,经常需要输入表格数据,如[用地用海分类表]. 之前的经验是做一个Excel表格,通过导入Excel,转换成数据库表格(Tabel). 但这样有一点不好的地方,Excel表格作为输入数据, ...

  5. html表格不能横向自动展示,layui数据表格table横向滚动条不显示纵向滚动条显示不完整...

    layui数据表格table横向滚动条不显示纵向滚动条显示不完整 layui数据表格table横向滚动条不显示,纵向滚动条显示不完整 需要把heigh高度写死 table.render({ elem: ...

  6. html创建一个四行三列表单,HTML(三)表格table与表单form的基本使用

    table的基本使用 表格的作用除了可以显示一个表格外,有的时候还可以用于辅助排版.以前的网页都是使用表格进行排版的,不过现在都不流行了,因为表格排版不利于网页结构. 1.新建表格 table就是表格 ...

  7. 最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云

    本文完整版:<最棒的 7 个 Laravel admin 后台管理系统推荐> 目录 Laravel admin 后台管理系按类型选择 脚手架型 CRUD 接口型 可视化编程 新一代低代码开 ...

  8. java怎么删除一行表格_Java 创建、删除Word表格

    在Word文档中,我们可以通过添加表格的方式来帮助我们更加清晰.直观地分析和展示数据.本文将介绍如何使用Free Spire.Doc for Java组件来给Word文档创建表格,及删除文档中已有的表 ...

  9. java删除表格_Java 创建、删除Word表格

    在Word文档中,我们可以通过添加表格的方式来帮助我们更加清晰.直观地分析和展示数据.本文将介绍如何使用Free Spire.Doc for Java组件来给Word文档创建表格,及删除文档中已有的表 ...

最新文章

  1. Android源码项目目录结构
  2. 修改mysql存储过程的权限调用权限 definer invoker
  3. 老李分享:Web Services 组件 1
  4. oracle 安装 挂载磁盘组_ora-15077,ASM磁盘组不能挂载
  5. 我的醉驾拘留15日记----第二日凌晨 午夜惊梦
  6. 终于来了!微软正式推出 VS Code 测试 API
  7. gym100825G. Tray Bien(轮廓线DP)
  8. oracle ora-22288,向oracle的blob字段导入文件
  9. 怎么在oracle中使用for循环
  10. sql server中扩展存储过程
  11. 孔浩用的mysql工具_springmvc 孔浩 hibernate
  12. 5. 软件工程 (一个大尺度的问题)
  13. Java发送附件到邮箱
  14. 【报错】亲测有用,copytranslator只显示部分翻译结果
  15. 自动驾驶汽车如何有助于可持续移动规划?
  16. 机器学习中的特异性和敏感性
  17. 解决-使用html2canvas截取页面时,页面的div背景图无法截取并跨域
  18. 【扫盲】史上最全的互联网专业词语汇总!
  19. 聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么
  20. 【干货】蚂蚁前端研发最佳实践

热门文章

  1. spin-up一些链接整理
  2. 黑白图片切换shader
  3. 【今日干货】分享个微信解绑手机号的方法
  4. c语言语言写压缩软件,哈弗曼压缩软件C语言代码.pdf
  5. shell脚本之数学计算问题
  6. [MBTI]什么是MBTI – 第一篇
  7. switch高级用法
  8. 【邢不行|量化小讲堂系列49-实战篇】量化投资中,计算技术指标时常见的8个坑
  9. Go语言实现字符串截取
  10. VScode下安装Live Server(自动刷新html页面)