处理不同控制器中的验证错误


Handling validation errors in different controllers

我对cakephp相当陌生,所以我可能只是在这里设置错误。

我创建了一个包含评论和帖子(以及其他内容)的简单博客。

我可以在查看提交回评论控制器(/controllers/comments/add)的帖子时添加评论。

我遇到的问题是,当出现验证错误时,它会将它们显示在/views/comments/add 视图中,而不是我添加评论/views/posts/view 的视图中。

我想,这必须是一件很常见的事情,我哪里出错了?

您可以要求注释控制器的 add 方法来呈现不同的视图:

$this->render('/Posts/view');

但是,当然,您需要确保"帖子/视图/"文件所需的所有数据都由评论控制器的添加方法收集和设置。

相反,我要做的只是通过 AJAX 提交评论表单(你知道 AJAX 吗?这样,您可以呈现注释/添加视图(或其相应部分),而无需刷新页面的其余部分。

当然,禁用Javascript的用户仍然必须转到其他页面来纠正他们的错误。但这不应该经常发生,一旦他们成功提交评论,您始终可以将他们重定向回帖子页面。

如果你是CakePHP的新手,并且打算使用AJAX,你可能想在某个地方使用这样的东西:

if ($this->request->is('ajax')) {
    $this->render('/Elements/ajax_comment_form');
}
// If it's not AJAX it'll fall through and show the regular comment add.ctp view