我试图验证我的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',
]
];
}
有谁能让我知道我在做什么错?
答案 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。