【问题标题】:Two Views/Controllers on one page?一页上有两个视图/控制器?
【发布时间】:2015-02-05 04:23:27
【问题描述】:

我是 CakePHP 的新手。到目前为止,我设法建立了一些视图、控制器和模型。这是我的问题:

我有两张桌子:

  • tea_types(茶类型列表及其陡峭时间)
  • steep_logs(浸泡过的茶历史)

对于每个表,我都有一个模型、一个视图和一个运行良好的控制器。 现在我想创建一个 index.php,我想在其中组合三个元素:

  • TeaTypes(操作:编辑、删除、添加、点击开始喝茶)
  • TeaTimer(当传递一个茶类型时,应该开始倒计时 - 我想用 JavaScript 来做)
  • SteepLo​​g(应将选择的每种茶添加到表中,并显示最后 20 个条目)

这些元素中的每一个都准备好了,但不是这些元素的组合在一个视图中。我是否必须制作一个结合这三个元素的额外控制器?没有模型的控制器是可能的还是明智的?

这两个控制器也是相互关联的:

  • TeaType hasMany SteepLo​​g
  • SteepLo​​g 属于 TeaType

我认为解决方案并不难,但我会知道最佳实践是什么。

【问题讨论】:

  • 您不会为此创建“组合”模型/控制器,但您必须associate the models。然后,使用Containable 行为,您可以在一次查找中检索所有数据。
  • 听起来不错。我将看看这些主题。您能否将其发布为答案,然后如果可行,我将关闭该问题。
  • 从博客教程重新开始。 book.cakephp.org/2.0/en/index.html#getting-started您的表名没有遵循约定(不是必需的,但也不是好的做法),您提出的问题告诉我,您并不真正知道如何使用该框架,也可能不知道如何使用任何其他 MVC 框架。
  • 嗨,burzum,是的,你是对的。我也是 MVC 的新手。你能告诉我应该如何布置我的桌子吗?我以为我在教程(复数等)中做到了。我想我只阅读了“博客教程”,但没有阅读更多主题。我会赶上这个。感谢您提供任何改进我的提示。
  • 再做一遍教程,这次注意了。它告诉您关于 first 页面的第三部分(“创建博客数据库”)中的约定。它链接到解释所有约定的此页面:book.cakephp.org/2.0/en/getting-started/…

标签: php cakephp model-view-controller


【解决方案1】:

为了遵循约定,您的表名应该是tea_typessteep_logs,它们的模型应该是TeaTypeSteepLog,控制器应该是TeaTypesControllerSteepLogsController

如果没有您的架构,我无法准确告诉您应该如何按照惯例设置模型关联,但从逻辑上讲,我认为TeaType hasMany SteepLogSteepLog belongsTo TeaType。您可以从博客教程或 Cake book 中了解如何定义您的模式以适应模型关联约定,该主题太长,无法在此总结。

定义模型关联后,您将能够根据需要从两个控制器中查找和操作这两个模型。

【讨论】:

  • 好吧,我重命名了我的控制器、模型、视图和表。我已经完成了 TeaType 和 SteepLo​​g 之间的关联。这适用于脚手架。下一部分将在一个页面上显示两个视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2011-08-28
相关资源
最近更新 更多