lravel-admin灯箱图片解析json格式的图片
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