Yii2 ajax验证不起作用

时间:2015-04-09 10:28:12

标签: php ajax forms validation yii2

我试图验证我的YII2注册表格,但它不起作用。在视图中:

$form = ActiveForm::begin([
    'id'                   => 'register',
    'options'              => ['accept-charset'=>'utf-8'],
    'validateOnChange'     => false,
    'enableAjaxValidation' => true,
    'validateOnSubmit'     => true,
])

在控制器中:

$model = new MUser();

if($model->load(Yii::$app->request->post()) && Yii::$app->request->isAjax)
{
    $model->refresh();
    Yii::$app->response->format = 'json';
    return ActiveForm::validate($model);
}
elseif($model->load(Yii::$app->request->post()) && $model->save())
{
    \\do something
}

在模特:

public function rules()
{
    return [
               [
                   'username', 
                   'unique', 
                   'targetClass' => 'com\modules\admin\models\MUser',
                   'message'     => 'Username exist',
               ]
           ];
}

有谁能让我知道我在做什么错?

1 个答案:

答案 0 :(得分:3)

更改

return ActiveForm::validate($model)

 echo json_encode(ActiveForm::validate($model));
        \Yii::$app->end();

ActiveForm::validate($model)是一个需要以json形式表示的数组,由json_encode和\Yii::$app->end()完成;确保应用程序停止只是检查。还要确保你在命名空间之后:

use yii\web\Response;
use yii\widgets\ActiveForm;

但是通过这样做,通过表单的ajax提交将无法正常工作,使用validationUrl。