отправка почты, ошибка, редирект?

WMix

герр M:)ller
Партнер клуба
а вы делаете редирект после _POST с передачей праметров если форма не прошла валидацию?

сколько решений с редиректом я не встречал, все они были кривовавтые на мой взгляд.
это и сессия и база и передача по _GET

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

а как делаете это вы?
 

С.

Продвинутый новичок
только решения с использованием js кажутся мне наиболее правильными. (каждое поле отправляется ajax на сервер, валидируется и получает статус). кнопочка отправить до проверки всех полей не работает.
Нередко для валидации одного поля требуется данные из других.
 

WMix

герр M:)ller
Партнер клуба
да, я понимаю, и закрываю на это глаза. проверю на сарвере будет ошибка останусь в почте
хотя мне это не нравится, париться через сессию не хочется.
 

С.

Продвинутый новичок
Ну и как же "только решения с использованием js кажутся мне наиболее правильными", если потом все равно перепроверять?
 

WMix

герр M:)ller
Партнер клуба
дело не в js скрипте, он просто уменьшает отправки невалидных полей. дело только в почте которая мне не нравиться, и в перекладке значаний из почты в сессию а из сессии обратно в форму.
я нашел в zf2 the-post-redirect-get-plugin, пытаюсь разобраться.
по крайней мере не нужно ничего перекладывать взад вперед
 

WMix

герр M:)ller
Партнер клуба
никак не соображу, как повторения проверки формы удалить
PHP:
    public function registerAction(){
        $form = new RegisterForm();
        $prg = $this->prg('/user/register', true); // the-post-redirect-get-plugin,
        $user = new User();
        $request = $this->getRequest();
        if ($request->isPost()) { 
            $post = $request->getPost();
            $form->setInputFilter($user->getInputFilter());
            $form->setData($post);
            if( $form->isValid() ){
                // save
                $this->flashMessenger()->setNamespace('success')
                    ->addMessage('ok');
                return $this->redirect()->toRoute('home');
            }
            else{
                $this->flashMessenger()->setNamespace('error')
                    ->addMessage('please fill the required fields');
                return $prg;
            }
        }
        if ($prg !== false) {
            $form->setData($prg);
            $form->setInputFilter($user->getInputFilter());
            $form->isValid();
        }
        return array('form' => $form);
    }
 

С.

Продвинутый новичок
Совершенно необязательно делать редирект после невалидации формы. И сессия тогда не нужна.
 

WMix

герр M:)ller
Партнер клуба
я уже долгое время его не делаю (пример на зенде), но есть траблы которые хочется избежать

1. GET формуляр -- заполняем отправка
2. POST формуляр с ошибкой -- правим ошибки отправка
3. POST/запись/REDIRECT
4. GET любая страничка -- !!!! нажимаем кнопочку назад !!!! возврат к шагу 2 некрасивое сообщение

я просто работал аяксом пытаясь уменьшить отправку невалидной почты. но хочется както решить.
 

С.

Продвинутый новичок
История -- что было, то было. Нечего туда ходить без надобности, а если пошел, то нечего там стесняться. Херней маешься.
 
Сверху