0

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

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

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

问题是,例如,当他们尝试发布空评论时,评论的验证会将其重定向到评论/添加(这是表单操作上的路由),但我不希望重定向这样做。我希望它恢复到原始视图,并且无论如何我都不需要在控制器或模型上更改它(据我所知)

有没有办法做到这一点?

谢谢。

4

1 回答 1

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尝试提交其中一个没有数据的表单。

如果您需要更多信息,请告诉我。

于 2012-10-04T09:39:31.803 回答