【问题标题】:Cakephp: maintaining hasMany/belongsTo relationships in controller actionsCakephp:在控制器操作中维护 hasMany/belongsTo 关系
【发布时间】:2009-06-25 14:26:31
【问题描述】:

原谅问题的标题;花了 20 分钟试图写一些连贯的东西(如果成功则值得怀疑)。

无论如何,以博客为例,我们的模型如下所示:

发布有很多评论 评论属于帖子

假设我要添加一条新评论:保存评论时,我需要在调用保存之前将父帖子(Post.id)的外键包含在数据数组中。

因为我想在上下文中与用户保持关系——我 不希望他们必须从选择字段中选择一个帖子来关联评论——这是我看到的两个选项:

1) 将评论表单放在帖子的视图中。

2) 将 Post Id 作为参数(通过 GET)传递给 Comment.add 操作(或向/从 Session 写入/读取);保存并 重定向回父 Post.view。

选项 1 非常适合博客,但不适用于用户个人资料,这可能是 表单太长,无法整齐地包含在用户视图中。

我猜选项 2 可行,但我必须编写一些特定于 Post 的显示/重定向条件 Comments.add 操作,它似乎不正确;从我读到的,我 应该尝试保持控制器之间的 1:1 关系 和模型。

#2 作为 Web MVC 最佳实践是否可以接受?还是我忽略了其他选择?

【问题讨论】:

    标签: model-view-controller cakephp


    【解决方案1】:

    我经常同时做这两件事。我已经将表单放在帖子的视图中(可能使用一个元素,如果你也想把它放在其他地方),但是让它提交给它的控制器(在这种情况下是 cmets)的添加操作并传递帖子的id。请注意 - 如果您需要实现私人帖子等,最好在 Comments 控制器的添加操作中进行检查。

    【讨论】:

      【解决方案2】:

      我觉得这两个选项都不错。

      1. 如果表单太长,只需在其中粘贴部分视图即可。
      2. 我认为在多个控制器中使用模型没有问题。当然,您不应该在每个控制器中使用每个模型,但如果您需要两个模型,为什么不呢?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 1970-01-01
        • 1970-01-01
        • 2015-12-22
        • 2012-11-03
        相关资源
        最近更新 更多