Php 筑巢还是不筑巢?MVC控制器(CodeIgniter)
背景: 我在理解如何在MVC架构中最好地使用控制器时遇到了一些困难 我有一个遵循此URL方案的Web应用程序:Php 筑巢还是不筑巢?MVC控制器(CodeIgniter),php,codeigniter,hierarchical,codeigniter-routing,Php,Codeigniter,Hierarchical,Codeigniter Routing,背景: 我在理解如何在MVC架构中最好地使用控制器时遇到了一些困难 我有一个遵循此URL方案的Web应用程序: /-主索引 /静态页面-静态页面 /categories-特定类别的索引 /categories/users-特定类别用户的索引 /categories/users/id#/user name-特定类别的特定用户 /categories/event-type-A与特定类别相关的事件索引 /categories/event-type-A/id#/event name-特定类别的特定事件
-主索引/
-静态页面/静态页面
-特定类别的索引/categories
-特定类别用户的索引/categories/users
-特定类别的特定用户/categories/users/id#/user name
与特定类别相关的事件索引/categories/event-type-A
-特定类别的特定事件/categories/event-type-A/id#/event name
与特定类别相关的事件索引/categories/event-type-B
-特定类别的特定事件/categories/event-type-B/id#/event name
id#
,则会自动更正格式错误的URL(错误的事件名称
s)
问题:
由于类别
,用户
和事件类型
都具有与它们相关联的独特功能(即编辑用户、操纵事件等),因此它们都是自己的控制者(对吧?)。由于event-type-A
和event-type-B
非常相似,它们共享从events
类扩展而来的共同功能
您建议我如何组织控制器,使其遵循OOP和MVC设计中的“标准实践”
我目前有一个Pages
类用于我的静态页面,我希望有一个categories
类来调用users
类、event-type-a
和event-type-B
类,它们(如上所述)是events
类的扩展。。。但从这里开始,我不确定如何最好地继续下去
任何简单/伪代码示例都将不胜感激
其他信息:
仅供参考:我正在使用PHP/MySQL。我一直在试图通过编写自己的框架来学习MVC,但最近我改用了CodeIgniter。也就是说,一个特定于CodeIgniter的解决方案或一个通用MVC解决方案就足够了
更新:
同样,我可以将
事件
组合到一个控制器中,然后从中生成两个类型
s。我只是对如何实际设置每个控制器(定义哪些方法等)以使它们正常工作感到困惑。将/categories/event-type-A
和/categories/event-type-B
更改为/categories/events/type
怎么样?如果类型
可以是A
或B
(或类似的东西)它似乎提供了一个令人满意的解决方案
实质上:
需要时,使用HMVC加载必要的MVC三元组
我以前从未听说过
HMVC
,但显然它允许我指定何时调用某些MVC三元组,这将最终使我能够控制何时调用不同的控制器。这将允许每个部分(类别
,事件
,类型
,等等)作为独立的模块,它们有自己的索引
页面,可以调用,但也可以根据需要提供更详细的数据。简单首选项。event-type-A
和event-type-B
的大部分代码都可以重用,但不是全部。因此,我不希望它们被列为事件
的子项,我希望它们是分开的(主要用于搜索引擎优化目的)。不过,谢谢你的建议。。。。除非有一种简单的方法可以使用您的方法实现这一点,同时从路径中隐藏事件
目录。假设我按照您的建议创建与scheme/categories/events/type/id\event name
匹配的控制器,我将如何定义我的控制器来实现这一点?我想您有用于类别
、事件
、类型
的控制器,但是,正如问题中所述,我不知道如何正确设置使其工作的方法。你能指导我完成这个过程吗?