перейти от одного действия (зарегистрироваться), чтобы подтвердить действие (показать отправленные данные) и страницу успеха Zend Framework - PullRequest
0 голосов
/ 29 марта 2012

Я новичок в Zend и создаю простую форму регистрации, но в которой много полей.Поэтому я хочу создать страницу подтверждения после действия регистрации пользователя.

Вот как работает мой поток: регистрация -> подтверждение -> успех / ошибка

Моя главная причина для отдельного подтвержденияСтраница формы - это поля данных так много, что пользователь должен пройти, чтобы убедиться, что они все правильно заполнены.

с помощью регистрации форм и подтверждения (с отключенным полем), я хочу знать, есть ли способпередать данные из регистрационной формы для подтверждения формы?

Просьба приветствовать любые полезные идеи и предложения;)

public function signupAction()
{
    $users = new Application_Model_Users();
    $form = new Application_Form_RegistrationForm();
    $this->view->form=$form;
    if($this->getRequest()->isPost()){
        if($form->isValid($_POST)){
            $data = $form->getValues();


    //some checks before sending data to confirm page
//not sure how the data can be passed to the confirm page from here
            $this->_redirect('auth/confirmsignup');
        }
    }
}


public function confirmsignupAction()
{
    $users = new Application_Model_Users();
    $form = new Application_Form_ConfirmRegistrationForm();
    $this->view->form=$form;
    if($this->getRequest()->isPost()){
        if($form->isValid($_POST)){
            $data = $form->getValues();
            //some checks before 
            unset($data['confirmPassword']);
            $users->insert($data);
            $this->_redirect('auth/login');
        }
    }
}

1 Ответ

2 голосов
/ 29 марта 2012

При перенаправлении вы потеряете данные POST, кроме случаев, когда:

  1. Вы сохраняете их в сеансе при регистрации, а затем читаете в подтверждение подтверждения
  2. Вы не перенаправляете вообще.Вместо этого, после первой проверки на наличие специальных данных в вашей форме, это может быть случайный токен, такой как хэш идентификатора сеанса и т. Д., Но его нелегко угадать, например «Подтвердить = 1».Если токен не существует, добавьте скрытое поле с этим токеном в форму и снова покажите его пользователю в том же действии с заполненными данными - это будет этап подтверждения.Если у вас снова есть регистрация POST, вы получите токен и, проверив его наличие, узнаете, что это вторая отправка с подтверждением, и вы можете продолжить регистрацию.Надеюсь, я не слишком это усложнил.
...