我最近开始使用CakePHP,虽然食谱不是一个糟糕的资源,但它并没有真正回答我的基本问题。
默认情况下,CakePHP的架构似乎认为您在一个模型的Controller中为一个操作获得了一个视图。但是假设我有一个典型的博客应用程序,从用户的角度来看共同观点包括:
这是一个非常常见的用例,但目前我无法真正掌握CakePHP"""""""解决它的方法。我在想:
后者似乎对我来说更干净,因为它可以重用子视图并避免控制器中的代码重复,但是从我读过的内容来看,我不确定是否CakePHP实际上可以做到这一点。任何建议都表示赞赏。
答案 0 :(得分:0)
这是一个非常常见的用例,但目前我无法真正理解CakePHP的“预期”解决方法。
这不是CakePHP特有的,但你可能在任何MVC框架中都有同样的“问题”。这完全是关于正确的SoC。
每个模型有一个Controller,但有一个View包含连接到不同控制器的某种子视图
那很接近。
通常,您可以获取该页面操作中页面所需的所有数据。注意:这并不意味着用数百行代码使控制器膨胀。您可以通过文章关联来获取评论,因为一篇文章有很多评论 - 这是您的关联。
您也可以使用view cells来显示内容。我个人更愿意尝试在不使用单元格的情况下获取所有数据。但我认为这是一个品味问题。
评论表格会在评论控制器上添加操作并重定向回用户来源。
您可以编写一个充当代理的组件,并向控制器透明地添加addComment和editComment“方法”,以便于重用并避免代码重复。我不会在这里描述完成它的整个方式,它只是很长,但我想你明白了。
我个人最喜欢的评论是CakePHP插件,用于评论RESTful API和基于JS的前端小部件。基本上是流行的Disqus小部件的简约克隆。只需将窗口小部件放入您的页面,即可以最可重复使用的方式立即在任何页面上使用注释。 :)