yii2 输入验证 / post表单验证
参考资料:
http://www.yiichina.com/doc/guide/2.0/input-validation
一般说来,程序猿永远不应该信任从最终用户直接接收到的数据, 并且使用它们之前应始终先验证其可靠性。
要给 model 填充其所需的用户输入数据,你可以调用 yii\base\Model::validate() 方法验证它们。该方法会返回一个布尔值,指明是否通过验证。若没有通过,你能通过 yii\base\Model::errors 属性获取相应的报错信息。比如,
PHP Code复制内容到剪贴板
- $model = new \app\models\ContactForm();
- // populate model attributes with user inputs
- $model->load(\Yii::$app->request->post());
- // which is equivalent to the following:
- // $model->attributes = \Yii::$app->request->post('ContactForm');
- if ($model->validate()) {
- // all inputs are valid
- } else {
- // validation failed: $errors is an array containing error messages
- $errors = $model->errors;
- }
要为表单启用ajax验证:
PHP Code复制内容到剪贴板
- $form = ActiveForm::begin([
- 'id' => 'contact-form',
- 'enableAjaxValidation' => true,
- ]);
当在输入字段级别和表单级别配置enableAjaxValidation,前者优先
控制器处理ajax验证:
PHP Code复制内容到剪贴板
- if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
- Yii::$app->response->format = Response::FORMAT_JSON;
- return ActiveForm::validate($model);
- }
验证是否为ajax请求,如果是,将通过运行验证并以json格式返回错误来响应请求