在CakePHP 2.2更改验证错误重定向

时间:2012-10-04 09:18:10

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.2

我有一个与多个控制器交互的视图(帖子,评论,类别......)

如果评论不为空,它将转到相同的操作(评论/添加)但在这种情况下我手动将它们再次重定向到上一个视图,如下所示:

$this->redirect(array('controller' => 'posts', 'action' => 'view', $this->request->data['Comment']['posts_id'], '#' => $this->Comment->id));

问题是,当他们尝试发布空注释时,例如,Comment的验证会将其重定向到comments / add(这是表单操作上的路由)但我不希望重定向执行此操作。我希望它回到原始视图,我无论如何都无法在控制器或模型上进行更改(据我所知)

有没有办法做到这一点?

感谢。

1 个答案:

答案 0 :(得分:1)

最简单的方法是通过AJAX提交表单。因此,您不要在提交时刷新整个页面 - 您只需返回表单,但有错误(如果有的话)。

显然,这对没有Javascript的用户不起作用。因此,您可以不担心这些用户,或者您可以这样做,以便您的注释控制器的add方法使用您想要的视图。像这样:

if ($this->request->is('ajax')) {
    $this->render('/Elements/comment_form');
    return;  // return the form only
} else {
    $this->render('/Posts/view'); // Your post view.ctp would have the comment form on it.
}

以下是我使用该方法的网页示例:http://www.lintonmeagher.com/contact尝试提交其中一个没有数据的表单。

如果您需要更多信息,请与我们联系。