【问题标题】:Change validation error redirection at CakePHP 2.2在 CakePHP 2.2 中更改验证错误重定向
【发布时间】:2012-10-04 09:18:09
【问题描述】:

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

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

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

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

有什么办法吗?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    显然,这不适用于没有 Javascript 的用户。所以你可以不用担心这些用户,或者你可以让你的 cmets 控制器的 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 尝试提交其中一个没有数据的表单。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多