YII2模型验证遇到错误停止继续并且以异常方式抛出错误信息 [ 2.0 版本 ]
1:YII2官方的方法
模型如下
`
<?php
namespace api\form;
class AppBindWx extends \yii\base\Model
{
public $openid, $userid;
public function rules()
{
    return [
        ['openid', 'string', 'min' => 200],
        ['userid', 'required'],
    ];
}
/**
 * @author 竹林风@875384189 2020/7/1 13:13
 */
public function attributeLabels()
{
    return [
        'openid' => '微信openid',
        'userid' => '会员ID',
    ];
}
}
`
这种验证在对写接口时不太友好(不是全部)
1:不能获取单个错误
2:既然后数据未通过,那么继续验证也没有意义
基于这种需求,只需要在模型中覆写方法即可
`public function addError($attribute, $error = '')
{
    throw new \Exception($error);
}`
这样当验证出现不符合要求的就会抛出异常结束后续流程,也不需要获取一堆错误再取出一条
控制器使用效果如下
` public function actionAppBindWx()
{
    \Yii::$app->response->format = \Yii::$app->response::FORMAT_JSON;
    try {
        $model = new AppBindWx();
        if ($model->load(Input::post(), '') && $model->save()) {
            return ['code' => 200, 'message' => '绑定成功'];
        } else {
            return ['code' => 400, 'message' => '绑定失败'];
        }
    } catch (\Exception $exception) {
        return ['code' => 400, 'message' => $exception->getMessage()];
    }
}`
竹林风
            注册时间:2017-04-06
最后登录:2022-02-15
在线时长:53小时3分
    最后登录:2022-02-15
在线时长:53小时3分
- 粉丝4
- 金钱135
- 威望40
- 积分1065

共 0 条评论