yii2 输入验证 / post表单验证
yii2 2017-08-09 09:42:28

 参考资料:

http://www.yiichina.com/doc/guide/2.0/input-validation

 

一般说来,程序猿永远不应该信任从最终用户直接接收到的数据, 并且使用它们之前应始终先验证其可靠性。

要给 model 填充其所需的用户输入数据,你可以调用 yii\base\Model::validate() 方法验证它们。该方法会返回一个布尔值,指明是否通过验证。若没有通过,你能通过 yii\base\Model::errors 属性获取相应的报错信息。比如,

PHP Code复制内容到剪贴板
  1. $model = new \app\models\ContactForm();  
  2.   
  3. // populate model attributes with user inputs  
  4. $model->load(\Yii::$app->request->post());  
  5. // which is equivalent to the following:  
  6. // $model->attributes = \Yii::$app->request->post('ContactForm');  
  7.   
  8. if ($model->validate()) {  
  9.     // all inputs are valid  
  10. else {  
  11.     // validation failed: $errors is an array containing error messages  
  12.     $errors = $model->errors;  
  13. }  

 

要为表单启用ajax验证:

PHP Code复制内容到剪贴板
  1. $form = ActiveForm::begin([  
  2.     'id' => 'contact-form',  
  3.     'enableAjaxValidation' => true,  
  4. ]);  

当在输入字段级别和表单级别配置enableAjaxValidation,前者优先

控制器处理ajax验证:

PHP Code复制内容到剪贴板
  1. if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {  
  2.     Yii::$app->response->format = Response::FORMAT_JSON;  
  3.     return ActiveForm::validate($model);  
  4. }  

验证是否为ajax请求,如果是,将通过运行验证并以json格式返回错误来响应请求

 

本文来自于:http://www.yoyo88.cn/study/yii2/130.html

Powered by yoyo苏ICP备15045725号