lravel-admin灯箱图片解析json格式的图片
xuexi 2025-12-14 16:52:01 发表在:PHP 查看数:37

lravel-admin灯箱图片解析json格式的图片

 <?php

namespace App\Admin\Controllers\Jianguan;

use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
use App\Models\Jianguan\Tousu;

use Carbon\Carbon;
class TousuController extends AdminController
{
    /**
     * Title for current resource.
     *
     * @var string
     */
    protected $title = '投诉建议管理';

    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new Tousu);


        //筛选
        $grid->filter(function(Grid\Filter $filter){ 

            // 范围过滤器,调用模型的`onlyTrashed`方法,查询出被软删除的数据。

            $filter->like('name', __('分类名称'));
            $filter->like('created_at', __('创建日期'))->date();


                });
        //筛选结束


        $grid->column('id', __('ID'))->sortable();

        // $grid->column('b', __('批次管理'))->display(function(){

        //   return "<a href=/".env('ADMIN_ROUTE_PREFIX')."/sym/pici?changjia_id=".$this->id.">  批次管理 </a>";
        //       });

     $grid->title('标题')->display(function ($title) {
       $data = json_decode($this->formdata, true) ?? [];
    return mb_strlen($data['title'], 'utf-8') > 10
        ? mb_substr($data['title'], 0, 10, 'utf-8').'...'
        : $data['title'];
});

  // 1. 用户名(普通字符串)
    $grid->column('contact', '联系电话')->display(function () {
        $data = json_decode($this->formdata, true) ?? []; // 解析JSON为数组(容错处理)
        return $data['contact'] ?? '未设置';
    });

  // 1. 用户名(普通字符串)
    $grid->column('content', '投诉内容')->display(function () {
        $data = json_decode($this->formdata, true) ?? []; // 解析JSON为数组(容错处理)
        return $data['content'] ?? '未设置';
    });


   $grid->column('images', __('举证素材'))
    ->display(function ($images) {
        if (is_string($images)) {
            $images = json_decode($images, true);
        }
        if (is_array($images)) {
            $images = array_filter($images, function ($value) {
                return $value !== null;
            });
            // 将相对路径转换为完整的URL
            $images = array_map(function ($image) {
                // 假设图片存储在storage/app/public目录下,使用storage_url函数生成完整URL
                return $image;
            }, $images);
        } else {
            $images = [];
        }
        return $images;
    })
    ->lightbox(['width' => 50, 'height' => 50]);

    // $grid->column('images', '签名')->display(function () {
    //     $data = json_decode($this->formdata, true) ?? [];
    //     $sigUrl = $data['images'] ?? '';
    //     return $sigUrl ? "<img src='{$sigUrl}' style='width:50px;height:50px;' />" : '无图片';
    // });


         $grid->column('created_at', __('创建时间'));

    //导出结束

        return $grid;
    }

    /**
     * Make a show builder.
     *
     * @param mixed   $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(Tousu::findOrFail($id));

        $show->field('id', __('ID'));
        $show->field('created_at', __('Created at'));
        $show->field('updated_at', __('Updated at'));

        return $show;
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new Tousu);

        $form->display('id', __('ID'));
        $form->text('name',__('厂家名称'))->required(); 
        $form->text('address',__('厂家地址'))->required(); 
        $form->text('tel',__('厂家电话'))->required();
        $form->text('email',__('厂家邮箱'));
        $form->text('worktime',__('营业时间'));
        $form->editor('content');
        $form->display('created_at', __('创建日期'));
        $form->display('updated_at', __('更新日期'));

        return $form;
    }
}

数据库格式为:

{"title":"你好","content":"这是测试的一些内容,请看看呢","contact":"13796963355"}
最近访问时间:2025-12-22 09:42:48
知识库:407条鸣谢:TAY  备案号:蜀ICP备2024090044号-1