• laravel-admin 表单处理json格式字段


    有一表某字段为json格式 结构如下

    [{"name":"1","value":"2"},{"name":"2","value":"1"},{"name":"3","value":"1"},{"name":"4","value":"1"},{"name":"5","value":"1"},{"name":"6","value":"1"},{"name":"7","value":"1"},{"name":"8","value":"1"}]

    如果想在编辑这个项目时展开挨个编辑而不是编辑整个字符串 需要做以下修改

    首先在表对应的model文件中添加

    protected $casts = [
            'item_detail' => 'json',
        ];

    item_detail即为json串的字段名   添加这个属性后laravel-admin会自动处理此字段对其进行json_decode

    之后在控制器的form方法中

    $form->table('item_detail','详情', function ($form) {
    
                $form->text('name');
                $form->text('value');
            });

    此时再进行编辑 就会显示所有的键值对了  如果想要美化 再用form的其他方法对字段进行美化

    注意 : 在model中设置对应的字段为json后  控制器detail(数据详情)方法中的相应字段的回调方法中也会被自动json_decode

    $show->field('item_detail', __('详情'))->unescape()->as(function ($content) {
           /*
            model中没有设置时 $content 为json串 设置后此时会自动转化为数组
            */
    //取出结构数据中所有item id $item_ids = []; foreach($content as $v){ $item_ids[] = $v['name']; } $item = Item::whereIn('id',$item_ids)->get(); $mapping_arr = []; foreach($item as $v){ $mapping_arr[$v->id] = $v->name; } $return = ''; foreach($content as $v){ if($v['value']==1){ $return = $return."<div class='alert alert-success' role='alert'>{$mapping_arr[$v['name']]}</div>"; }else{ $return = $return."<div class='alert alert-danger' role='alert'>{$mapping_arr[$v['name']]}</div>"; } } return $return; });
  • 相关阅读:
    小程序自定义日历组件
    uni-app 区分环境
    uniapp开发微信小程序获取用户手机号
    flex布局中子元素宽度失效的问题
    使用 VSCode 创建 SpringBoot RESTful 增删改查接口项目并发布
    [译] 如何使用 WebGL 技术进行风力地图可视化
    Cesium Primitive API 实践:绘制一个三角形
    ArcPy 输出路径神坑:不能有短横线
    【问题记录】本地没有更新远程仓库的jar包
    k8s 的pod按照时间排序
  • 原文地址:https://www.cnblogs.com/zwsblogs/p/12673602.html
Copyright © 2020-2023  润新知