我在引用用户 Controller 和 login() 和 register() 操作的元素中有我的登录和注册表单。例如,当我在模式或页面 Controller 操作中使用此元素时,当用户出现验证错误(即模型验证)时,它会重定向到登录/注册操作页面(而不是更新元素)。
我意识到我可以使用 Javascript/JQuery 验证,但是有什么方法可以让 CakePHP 的模型验证更新元素而不是在发生错误时重定向到原始操作的页面?
最佳答案
我过去用 this PersistentValidation component 解决了这个问题.您设置它的方式是将 PersistentValidation
组件包含在您的 UsersController
以及您计划包含登录/注册元素的任何其他 Controller 中。
您的登录/注册表格将提交给他们各自的 Controller 操作。如果验证失败,该操作将重定向回引用页面。例如:
if (!$validated) {
$this->redirect($this->referer());
}
您重定向到的操作所调用的 View 将自动植入上一个请求的验证错误。
这在幕后起作用,方法是将验证错误存储在 session 变量中,并在重定向后检索这些错误,使它们可用于当前请求的 View /元素。您可以自己完成此操作,但该组件使用起来非常轻松。
关于php - CakePHP 元素错误处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370208/