errors的结构,设置响应格式为JSON并返回422状态码。" /> errors的结构,设置响应格式为JSON并返回422状态码。">

Yii2表单验证错误对象转为JSON返回

胖涛酱_2199

胖涛酱_2199

2026-08-20

1036人浏览

原创

yii2中将表单验证错误转为json返回,需封装为status:false、message:"验证失败"、errors:$model->errors的结构,设置响应格式为json并返回422状态码。

yii2表单验证错误对象转为json返回

Yii2 中将表单验证错误对象转为 JSON 返回,核心是把 $model->errors(关联数组)结构化处理后用 Json::encode() 输出即可,同时注意设置响应头和状态码以符合 API 规范。

获取验证错误并格式化为标准 JSON 结构

验证失败后,$model->errors 是一个以属性名为键、错误信息数组为值的多维数组。直接返回它可能不符合前端预期(比如希望扁平化或带统一字段)。推荐封装为如下结构:

  • status: false
  • message: "验证失败"
  • errors: 关联数组,如 {"username": ["用户名不能为空"], "email": ["邮箱格式不正确"]}

示例代码:

Feishu calendar sync, local ics to json data for AI agent
Feishu calendar sync, local ics to json data for AI agent

将ICS日历文件转为JSON格式,用于飞书日历导入导出及数据集成。

下载
use yii\helpers\Json;

if ($model->load(Yii::$app->request->post()) && !$model->validate()) {
    $response = [
        'status' => false,
        'message' => '验证失败',
        'errors' => $model->errors,
    ];
    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    return $response;
}

确保响应头和状态码正确

若手动 echo 或使用 exit,容易遗漏 HTTP 状态码。建议让 Yii 自动处理:

  • 设置 Yii::$app->response->format = \yii\web\Response::FORMAT_JSON,框架会自动设 Content-Type: application/json
  • 验证失败时返回 422(Unprocessable Entity)更语义化: Yii::$app->response->setStatusCode(422);

统一错误响应(可选进阶)

项目中建议封装一个通用方法,避免重复逻辑。例如在 BaseController 中添加:

protected function responseValidationError($model)
{
    Yii::$app->response->setStatusCode(422);
    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    return [
        'status' => false,
        'message' => '参数验证失败',
        'errors' => $model->errors,
    ];
}

控制器中直接调用:return $this->responseValidationError($model);

注意点

  • $model->errors 只在 validate() 或 save() 后才可用;仅 load() 不触发验证
  • 若模型有自定义验证规则(如 inline validator),确保其正确向 $this->addError() 添加错误
  • 中文错误信息需确认项目字符集为 UTF-8,JSON 编码不会乱码

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

js json yii2 yii

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2015

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2922

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

996

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3299

7

ThinkPHP表单验证与数据安全处理实战
ThinkPHP表单验证与数据安全处理实战

本专题聚焦 ThinkPHP 在表单处理中的验证与安全机制,系统讲解验证器使用、自定义规则、场景验证以及错误提示处理。内容涵盖 XSS 防护、SQL 注入防御、数据过滤与输入校验等关键安全措施。通过实际案例,帮助开发者构建安全可靠的数据处理流程。

2026.03.30

201

20

PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2025.09.04

2910

22

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.8万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.8万人学习