Информация о пользователе в модальной форме перед отправкой формы в Yii

У меня есть форма, и после того, как пользователь отправил форму, и проверка прошла нормально, я хочу попросить его указать адрес электронной почты и псевдоним в модальном окне. Если пользователь заполняет и отправляет электронное письмо и псевдоним, я хочу подтвердить его и сохранить как новую запись или получить идентификатор существующей (в случае, если электронная почта уже использовалась в прошлом). Если проверка не удалась, пользователь должен иметь возможность исправлять значения в том же режиме. Если все в порядке, я хочу сохранить форму, включая создание идентификатора пользователя.

У меня уже есть сохранение формы и процесс создания / поиска пользователя. Я просто не знаю, как это собрать, чтобы работать по сценарию, который я описал выше. Кто-нибудь может объяснить, как это должно быть сделано в Yii? Я использую Yii 1.1.15 и Yii Booster. Спасибо.

0

Решение

В Yii _form.php просмотр файла используется как в update.php а также create.php просмотров по умолчанию.

Итак, вам может понадобиться что-то сделать. Аналогично: вставьте форму с модальным видом в update.php и create.php.
Действия и разные для них, поэтому вы держите логику отдельно; это основное преимущество MVC.

public function actionCreate() {
$model = new Users;
if (isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
if ($model->save()) { // here in the save() method the valadation is included
// ONLY after we validate and successfully saved we go to update action
$this->redirect(array('update', 'id' => $model->id));
}
}
$this->render('create', array(
'model' => $model,
));
}

Главное, что при попытке сохранить save() Метод проверки происходит автоматически.
Таким образом, если проверка не успешна, логика возвращает к тому же действию (например, создать) с полями, заполненными в поле зрения, так как модель уже передает данные в нее: $model->attributes = $_POST['Users'],

Если проверка прошла успешно, мы перенаправляем дальше. Не обязательно отправлять форму ajax, здесь подходит даже случайная отправка.

public function actionUpdate($id) {
$model = $this->loadModel($id);
if (isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
if ($model->save()) { // after saving EXISTING record we redirect to 'admin' action
$this->redirect(array('admin'));
}
}
$this->render('update', array(
'model' => $model,
));
}

Формы в представлениях (обновление / создание) вы сохраняете, как изначально задумано.

Проверка на уникальность проста в правилах модели ():

array('username, email', 'unique'),

Проверка электронной почты для синтаксиса электронной почты выглядит следующим образом:

array('email', 'email'),
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]