竹林风 2020-07-01 13:28:52 980次浏览 0条评论 0 0 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()];
    }
}`
    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册