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

0

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

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

Теги:
modal-dialog
forms
yii

1 ответ

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() метод save() проверка выполняется автоматически. Поэтому, если проверка не выполняется, логика возвращает к тому же действию (например, создать) с полями, заполненными в представлении, поскольку в модели уже есть данные, переданные в нее: $model->attributes = $_POST['Users'].

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

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'),

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

array('email', 'email'),
  • 0
    Таким образом, решение должно быть: - Создать форму с Ajax submit - Если проверка в порядке, заполнить модальные - Пользователь вводит адрес электронной почты и псевдоним Что делать дальше? Как проверить адрес электронной почты и псевдоним, а затем отправить все данные вместе?
  • 0
    @kokoseq, посмотрите мое обновление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню