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 条评论