Persist Zend Form объект после перенаправления - PullRequest
0 голосов
/ 30 сентября 2010

Таким образом, дело в том, что у меня есть форма на странице A, которая отправляется на страницу B. После проверки формы на странице B она должна перенаправить обратно на страницу A и показать форму с возможными ошибками.

Какой лучший способ добиться этого?Разумно ли временно помещать весь объект формы в сеанс?Или есть более элегантное решение?

Ответы [ 4 ]

3 голосов
/ 30 сентября 2010

Почему бы не проверить его на странице A, а затем перейти на страницу B, если она действительна? Таким образом, вам не нужно делать никаких уродливых хаков.

1 голос
/ 30 сентября 2010

Правильный способ - отправить форму на ту же страницу, и только если она действительна, вы перенаправляете через заголовок Location: на следующую страницу.

0 голосов
/ 18 февраля 2011

Zend_Form имеет такие методы, как getMessages, getErrorMessages и setErrors, setErrorMessages и так далее. Вы можете попытаться сделать это таким образом - никогда не пытался, но теоретически должно работать:

  1. На странице B после неудачной проверки сохранить сообщения проверки в сеансе.
  2. Перенаправление на страницу A.
  3. Перед рендерингом формы проверьте, есть ли сообщения в сеансе, если они есть, установите их в форму.
  4. Форма рендеринга - если сообщение установлено, оно будет сгенерировано Errors декоратором.
0 голосов
/ 30 сентября 2010

Мне кажется, что страница А является виновником здесь.

Вместо отображения формы входа на странице A, когда пользователь не вошел в систему, вы можете сохранить URL-адрес страницы A в сеансе, а затем перенаправить на (единственную!) Страницу входа (страница B, справа).?), обрабатывается что-то вроде AuthController::loginAction().

При неудачной проверке вы оставляете его там на странице входа в систему, отображая ошибки проверки и форму.При успешной проверке / входе в систему вы проверяете сеанс, чтобы увидеть, есть ли там сохраненный URL.Если так, отправь его туда.Если нет, отправьте его в любое место по вашему выбору, либо на страницу своего профиля, либо на домашнюю страницу, либо на страницу с поздравлениями.

Понимаете, что я имею в виду?

...