Добрый день.
Столкнулся с тем, что yii2 не проверяет методом AJAX уникальность поля.
public function rules() {
return [
['name', 'required', 'message' => 'Введите имя пользователя'],
['name', 'unique', 'targetClass' => 'app\models\User', 'message' => 'Данное имя пользователя уже занято.'],
['email', 'required', 'message' => 'Введите почтовый адрес'],
['email', 'unique', 'targetClass' => 'app\models\User', 'message' => 'Данный почтовый адрес уже занят'],
['email', 'email', 'message' => 'Некорректный формат почты'],
['password', 'required', 'message' => 'Введите Ваш пароль'],
['password', 'string', 'length' => [6,18], 'message' => 'Пароль должен содержать от 6 до 18 символов'],
['verifyCode', 'captcha', 'message' => 'Введите проверочный код'],
];
}
В БД имеется уже строка с именем 'Name', если я ввиду в строку формы опять же 'Name', то валидация покажите, что все гуд. А вот когда второй раз проверяю валидацию методом validate(), то уже показывает, что данное имя занято. С чем это связанно?
-----------------
public function actionSignup() {
$form = new SignupForm;
if($form->load(Yii::$app->request->post())) {
if($form->validate() && $form->signup()) {
return $this->goHome();
}
}
return $this->render('signup', [
'
form' => $form,
]);
Проверка уникальности проходит после нажатия кнопки и в последствии обновления страницы
----------------------------
Изменил в контроллере:
public function actionSignup() {
$form = new SignupForm;
if(Yii::$app->request->isAjax && $form->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($form);
}
if($form->load(Yii::$app->request->post())) {
if($form->signup()) {
return $this->goHome();
}
}
return $this->render('signup', [
'form' => $form,
]);
}
к полям ввода добавил
'enableAjaxValidation' => true,
проблема осталась прежней валидация не выполняет нужную функцию
---------------------------
Выпадает данная ошибка при вводе данных в поле