当前位置:首页 > 问答 > 正文

接口数据|响应格式_laravel返回值与layui返回数据格式详解

接口数据|响应格式_laravel返回值与layui返回数据格式详解

🚀 Laravel与Layui接口对接全攻略 🚀

📦 Laravel响应格式设置

默认JSON格式

Laravel默认返回JSON格式,通过中间件或控制器即可快速配置:

// 中间件统一设置响应头
public function handle($request, Closure $next)
{
    $response = $next($request);
    $response->header('Content-Type', 'application/json');
    return $response;
}
// 控制器直接返回JSON
return response()->json(['code' => 0, 'msg' => '成功', 'data' => $data]);

资源类(Resource)自定义格式

使用php artisan make:resource UserResource生成资源类,定义toArray方法:

接口数据|响应格式_laravel返回值与layui返回数据格式详解

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'created_at' => $this->created_at->format('Y-m-d'), // 🔧 时间格式化
    ];
}

📊 Layui表格数据格式要求

Layui表格需要固定键值对结构,否则会报错❌:

{
    "code": 0,      // 状态码(0表示成功)
    "msg": "成功",   // 提示信息
    "count": 100,   // 数据总条数
    "data": [       // 具体数据数组
        {"id": 1, "name": "张三"},
        {"id": 2, "name": "李四"}
    ]
}

🌳 树形表格特殊字段

对于层级数据,需添加以下字段:

{
    "parentId": null,  // 父级ID
    "children": [],    // 子级数组
    "isParent": true   // 是否为父节点
}

🔗 Laravel与Layui对接实战

后台联动示例(控制器+Ajax)

  • Laravel控制器

    接口数据|响应格式_laravel返回值与layui返回数据格式详解

    public function getMethods(Request $request)
    {
      $controller = $request->get('controller');
      $methods = get_class_methods("App\\Http\\Controllers\\$controller");
      return response()->json(['data' => $methods]); // 🚀 直接返回JSON
    }
  • Layui前端

    form.on('select(role)', function(data) {
      $.ajax({
          url: '/getMethods',
          data: {controller: data.value},
          success: function(res) {
              // 🎉 动态渲染下拉框
              $('#methods').html(res.data.map(v => `<option>${v}</option>`));
          }
      });
    });

权限分配案例

  • Laravel返回嵌套数据

    public function getPermissions()
    {
      $permissions = Permission::with('children')->get();
      return response()->json(['data' => $permissions]); // 📦 包含子权限
    }
  • Layui表格渲染

    table.render({
      elem: '#permissionTable',
      url: '/getPermissions',
      cols: [[
          {field: 'name', title: '权限名称'},
          {field: 'display_name', title: '显示名称'},
          {field: 'children', title: '子权限', templet: '#childrenTpl'} // 🌳 树形结构
      ]]
    });

⚠️ 版本适配与注意事项

  1. Laravel版本:建议使用8.5+,资源类和响应生成器更强大。
  2. Layui版本:2.x+支持树形表格,需确认lay-filtertemplet用法。
  3. 数据转换:Laravel查询结果需手动封装为Layui格式,尤其是分页和嵌套数据。

💡 小技巧:在Laravel中使用transform方法快速转换数据格式:

return response()->json($data->transform(function ($item) {
    return [
        'code' => 0,
        'msg' => '成功',
        'count' => $item->total(),
        'data' => $item->items()
    ];
}));

通过以上步骤,Laravel与Layui的接口对接将变得轻松有趣!🎉

发表评论