0
有我的方式:Yii2誤差AJAX驗證運行JS腳本
$form = ActiveForm::begin([
'id' => 'user-create-form',
'enableAjaxValidation' => true,
'enableClientValidation' => false,
'validationUrl' => Url::toRoute(Yii::$app->controller->id . '/validation'),
'validateOnType' => true,
]);
JS腳本註冊這個表格上,並根據對.keyup()
事件的一些規則,以英語譯音進行俄語。音譯結果被添加到samname
字段。
有一個在UserCreateForm
模型驗證規則:
public function rules()
{
return [
[['samname'], 'validateUserExist'],
];
}
public function validateUserExist()
{
$check = Yii::$app->CustomComponents->checkUserExist($this->samname);
if ($check) {
$errorMessage = 'User exists: ' . $check;
$this->addError('samname', $errorMessage);
}
}
功能checkUserExist()
檢查現有創建的名稱,並在匹配的情況下返回一個錯誤。
有行動上的控制器:
public function actionValidation()
{
$model = new UserCreateForm();
if (\Yii::$app->request->isAjax && $model->load(\Yii::$app->request->post())) {
\Yii::$app->response->format = Response::FORMAT_JSON;
echo json_encode(ActiveForm::validate($model));
\Yii::$app->end();
}
}
它的偉大工程,進行驗證,匹配的情況下返回一個錯誤......
但是!
需要再次運行JS腳本,並在錯誤時將下一個字母添加到名稱(JS腳本提供此功能)。如何在驗證器返回錯誤後再次運行JS腳本?
我認爲它可以幫助你:https://yii2-cookbook.readthedocs.io/forms-activeform-js/ – yafater
@yafater,我不明白是什麼事件是必要的使用和如何使用完全相同它。你幫我嗎? – rsnd
我該怎麼幫你? – yafater