перейти от одного действия (регистрация) к подтверждению действия (показать отправленные данные) и странице успеха Zend Framework

Я новичок в 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');
        }
    }
}

person luhfluh    schedule 29.03.2012    source источник


Ответы (1)


При перенаправлении вы потеряете данные POST, если только:

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