重定向后保留Zend Form对象

时间:2010-09-30 09:56:04

标签: zend-framework zend-form

所以问题是我在页面A中有一个表单,它正在页面B提交。 在页面B验证表单后,它应该重定向回到页面A并显示包含可能发生的错误的表单。

实现这一目标的最佳方法是什么?临时将整个表单对象放入会话中是否明智?还是有更优雅的解决方案?

4 个答案:

答案 0 :(得分:3)

为什么不在第A页验证它,然后如果它有效则转发到第B页?这样你就不必做任何丑陋的黑客攻击。

答案 1 :(得分:1)

正确的方法是将表单提交到同一页面,并且只有在它有效时才会通过Location:标题重定向到下一页。

答案 2 :(得分:0)

听起来我觉得Page A是罪魁祸首。

当用户未登录时,您可以在页面A中保存页面A的URL,然后重定向到(唯一!)登录页面(页面B,对吧?),而不是在页面A上呈现登录表单。处理类似AuthController::loginAction()

验证失败后,您将其保留在登录页面上,显示验证错误和表单。成功验证/登录后,您检查会话以查看是否存在已保存的URL。如果是这样,请将他送到那里。如果没有,请将他送到您选择的某个地方,无论是他的个人资料页面还是主页,或者是某种恭喜您登录的页面。

明白我的意思?

答案 3 :(得分:0)

Zend_Form包含getMessagesgetErrorMessagessetErrorssetErrorMessages等方法。你可以尝试这样做 - 从未尝试过,但理论上应该有效:

  1. 在会话中验证商店验证消息不成功后,在页面B上。
  2. 重定向到第A页。
  3. 在呈现表单之前,检查会话中是否有消息,如果有,请将它们设置为表单。
  4. 渲染表单 - 如果设置了消息,它们将由Errors装饰器生成。