Validation CakePHP:在重定向时保留验证数据

Validation CakePHP:在重定向时保留验证数据,validation,cakephp,redirect,registration,Validation,Cakephp,Redirect,Registration,我在这里看到了很多提到的这个问题,但我找不到任何令人满意的答案,所以我将尝试以不同的方式来表述它: 我在同一页面上有一个登录表单和一个用户注册表单(我们称之为“frontpage”) 每个表单都会导致不同的控制器操作。验证后,cakephp试图在users/login和users/register视图中显示验证错误,但我没有这些视图,也不想要这些视图,因此我被迫重定向回我的“frontpage”。但是,在重定向时,验证数据将丢失 如何保持验证数据显示在frontpage上,而不必为登录和注册函数

我在这里看到了很多提到的这个问题,但我找不到任何令人满意的答案,所以我将尝试以不同的方式来表述它:

我在同一页面上有一个登录表单和一个用户注册表单(我们称之为“frontpage”)

每个表单都会导致不同的控制器操作。验证后,cakephp试图在users/login和users/register视图中显示验证错误,但我没有这些视图,也不想要这些视图,因此我被迫重定向回我的“frontpage”。但是,在重定向时,验证数据将丢失


如何保持验证数据显示在frontpage上,而不必为登录和注册函数添加单独的页面?

Cakephp将验证错误保留在

$this->ModelName->invalidFields();
如果希望它持久化,我相信必须将其保存在会话变量中。i、 e如果重定向丢失了属性值,请尝试将其保留在会话变量中

更新:


invalidFields再次执行整个验证过程,应该使用$this->ModelName->validationErrors

我发现这是关于持久性验证的,但它非常古老,看起来非常复杂,cakePHP肯定有不同的处理方法。我认为多个函数共享同一个视图并不少见。不,这是$this->ModelName->validationErrors。如果您调用上述方法,您将再次重新验证(这可能会产生不良副作用)。因此,请相应地更正您的答案-否则它是错误的。好的,我在会话中保存了validationErrors。但是我如何在重定向后将它们应用到视图中呢?没关系,这很简单。现在,我在重定向到的控制器的beforeFilter中有了它:
$this->User->validationErrors=$this->Session->read(“validationData”);$this->Session->delete(“validationData”)