2011-08-19 149 views
1

我对CakePHP有一个关于它的体系结构的问题。蛋糕php架构

我有一个应用程序,这将只有两个型号(产品和类别)。

我必须制作一个在线产品浏览器。对我来说,让一个控制器“产品”和一个控制器“类别”没有任何意义,因为我将在产品上执行20多个操作,而在类别上没有任何操作。

我有几个关键functionnalities,我可以为每个functionnalities的一个控制器?例如一个控制器“搜索”,其具有“搜索结果”,“高级搜索”,“基本搜索”的动作。

我们将在这个项目上的几个开发商,我不希望我们一直都阻止,因为一个是做一些编辑产品的控制器上(我真的不喜欢文件,1000个+行代码)。

第二个问题:什么是我应该用在几个不同的子视图片段鉴于mecanism? 例如为了查看一个产品的细节,我需要展示很多东西:图片部分,说明部分,类似产品,评论......是否有可能有子部分?

非常感谢您

回答

5

对于“子视图”查看元素,就是这样。它们是可以包含在其他视图中的视图代码片段。元素的正确结构可以创建一些非常优雅的视图/子视图关系。 http://book.cakephp.org/view/1081/Elements

至于你的控制器问题,这也是我一直在努力解决的问题。从我所看到的情况来看,这听起来像是你错误地分类了你的行为。想想你正在做的动作的替代分类法(将所有搜索功能混合到一个控制器中就是一个很好的例子)。

也许你应该想想控制器作为分类的各种行动,而不是在其上的各种动作可以执行(因为它似乎你正在做的)你的网站的各个方面的对象。因此,您可能没有可以搜索,列出,购买等的CATEGORY控制器,产品控制器(可以按照聚合 - 也可以按类别 - 或单独处理查看您的产品),也可以是用户控制器为您的用户帐户?没有查看您的应用程序细节很难说。搜索将是动作,这将在您的产品上执行。

有一两件事,我已经在做基于页是捡我的控制器的错误,我将不得不而非车型。考虑你的数据(模型)以及可以对它们执行的操作(控制器中的操作),然后考虑你的观点。

我希望我能给你更具体的帮助,但不知道你的应用程序的具体需求,我只能给你如何打破你的控制器的指导。看看这个问题:

CakePHP - file structure confusion - different controllers, or all in same?

有关该主题的更多讨论。

希望有帮助!

+0

好吧,非常适合 要素”。 问题是,在这个应用程序,我只需要显示/搜索/查看详细信息/查看相关产品/ ...在“产品”模型上的行动,事情是,它将使一个巨大的文件与80%我的代码,我不认为这是一个好主意。 – J4N

+0

还有一件事,我有三张包含相同信息,但语言不同的表格,我如何才能只做一个控制器,并根据语言切换表格? – J4N

+0

这应该是一个不同的SO问题,这样每个人都可以受益,但我的想法是创建一个模型,根据路由逻辑(检查前缀和$ useTable属性)切换其基础表,或者 - 如果每个表都复杂或不同足以让某些点的不同数据查看使用$ uses属性在控制器中交换模型。尽管... – matthewdunnam

1

,如果您有没有与之相关的方法/措施您不需要分类控制器。我假设你可能需要一个管理员CRUD来管理你的类别?

关于搜索;您的核心搜索功能应该驻留在Products模型中,各种控制器调用适当的方法。在大多数情况下,对一个模型进行基本搜索或高级搜索可以通过一种方法进行处理,它只能确保更多搜索字段的问题?

如果您有几个开发人员并担心同一个文件存在冲突,那么您确实需要考虑版本控制,如GITSVN,而不是与MVC框架核心方法相反的方法。这会在未来造成更少的问题。

我相信你的问题关于“子视图”是通过使用elements,这是在视图效果可重复使用的部分解决。

好运

+0

我知道我不需要类别控制器,也不需要任何管理员部分,我们连接在一个ERP视图上。 – J4N

+0

搜索功能真的比在所有字段中搜索输入真的更加复杂和智能,我们必须交互输入(例如,如果我们看到一个150毫升,我们必须将其转换为0.150,并将其搜索到卷列,并且我们有>,<, <=, > =运营商,例如葡萄酒<2000必须只返回11年以上的葡萄酒(虚拟示例),并且所有这些标准都可以累计 我们已经有了代码版本控制(TFS)。它并没有真正告诉我是否必须将整个网站的所有逻辑放在一个文件中,这会产生一个巨大的文件,我们无法轻松找到任何东西 – J4N

+0

而源代码管理有助于合并文件,它不会避免有人必须改变一种方法的功能,另一种方法也是如此,并且他们改变了两种方法... – J4N