在 Yii 2.0 中,唯一性验证失败时,提示不够友好,自动调整优化的分析

1、测试人员提交了一个 Bug,认为唯一性验证失败时,提示不够友好(中英文混杂,用户不易理解),提示信息如图1

图1

2、在本地环境的最新版本中,准备复现时,意外发现提示信息已经全部显示为中文,提示信息如图2

图2

{
    "code": 226004,
    "message": "数据验证失败:租户ID, 栏目名称, 是否被删除 与 删除时间 的值 \"\"015ce30b116ce86058fa6ab4fea4ac63\"-\"深圳市9\"-\"0\"-\"0\"\" 已经被占用了。"
}

3、查看相应程序文件,并未针对提示信息做相应调整,查看 Git 日志,提交:通过运行 composer update 来更新 Yii 2 至最新版本,已将 Yii Framework 从 2.0.15.1 版本升级到 2.0.31。初步怀疑是由于 Yii 框架版本的升级,进而调整了提示信息。如图3

图3

4、部署标签:1.10.4-alpha.5,为升级前的版本,Bug 已复现,如图4

图4

{
    "code": 226004,
    "message": "数据验证失败:The combination \"015ce30b116ce86058fa6ab4fea4ac63\"-\"深圳市1\"-\"0\"-\"0\" of 租户ID, 栏目名称, 是否被删除 and 删除时间 has already been taken."
}

5、部署标签:1.10.4-alpha.6,为升级后的版本,Bug 已修复,英文已经消失,提示信息更友好,如图5

图5

{
    "code": 226004,
    "message": "数据验证失败:租户ID, 栏目名称, 是否被删除 与 删除时间 的值 \"\"015ce30b116ce86058fa6ab4fea4ac63\"-\"深圳市1\"-\"0\"-\"0\"\" 已经被占用了。"
}

6、由此得出结论,唯一性验证失败时,提示更友好的缘故在于,已将 Yii Framework 从 2.0.15.1 版本升级到 2.0.31。究竟是期间的哪个版本导致的,查看 /vendor/yiisoft/yii2/messages/zh-CN/yii.php 的 Github 日志。参考网址:https://github.com/yiisoft/yii2/commit/b8a3fa4ff96cb80d77fcf8003163c9001770ae8b#diff-9083c63f8544587712f4083785a317cf ,在提交:b8a3fa 中,新增加了一行。提交于 2018年4月5日,如图6

图6

    'The combination {values} of {attributes} has already been taken.' => '{attributes} 的值 "{values}" 已经被占用了。',

7、参考网址:https://github.com/yiisoft/yii2/tree/2.0.16/framework/messages/zh-CN ,提交:b8a3fa 存在于 Tag:2.0.16 中。因此,可以确定 Yii Framework 的 2.0.16 版本,已经优化了相应提示信息。如图7

图7

永夜