0

所以我试图扩展博客教程添加一些评论:

Post hasMany Comments

我想在与“帖子视图”相同的视图中显示添加评论表单。事情是我不知道获得这种方法的最佳方法。我想了三个办法:

  • 在 Comments Controller 中创建一个函数来处理数据。
  • 在 Post Controller 中创建一个函数来处理数据。
  • 在处理帖子视图的同一函数中处理数据。

前两个“解决方案”的主要问题是验证错误不会出现在表单中,除非我在会话变量中保存无效字段,然后在 beforeFilter 回调中解析变量,像这样:

function beforeFilter () {
    if ($this->Session->check('comment_error')) {
        $this->Post->Comment->validationErrors = $this->Session->read('comment_error');
        $this->Session->delete('comment_error');
    }
}

我基本上所做的是将无效字段调整为实际视图并使其正确显示。这真的很好用,但对我来说似乎很难看。最好的方法是什么?

另一个相关问题:控制器应该反映视图吗?我的意思是在那个例子中,我考虑只有一个评论模型并处理控制器中的所有数据,其中添加评论的表单(即使它在 Post Controller 中)。

4

2 回答 2

0

我是这样看的:

  1. 在每个帖子下都有一个输入框“添加评论”,带有一个提交按钮。
  2. 提交一些文本后,表单会重定向到comments_controller,其中使用此post_id、正文、作者、日期等保存评论。
  3. 保存评论并完成所有逻辑后,它会将您带回帖子。
  4. 在每个帖子下都会显示所有相关评论(具有按日期或其他排序的相同 post_id)。
于 2011-11-14T16:52:15.457 回答
0

听起来您正在寻找 Mutlivalidatable 行为:http ://bakery.cakephp.org/articles/dardosordi/2008/07/29/multivalidatablebehavior-using-many-validation-rulesets-per-model

这允许您为每个模型定义超过 1 个验证规则集。使用您的控制器来确定在发布内容时应用哪个控制器。

PS 我只在 Cake 1.3 项目中使用过它,不确定它是否适用于 2.0。

于 2011-11-14T13:58:40.523 回答