什么时候应该在mvc中使用多个控制器?
是否有时您可能想要在mvc中使用多个控制器?什么时候应该在mvc中使用多个控制器?
例如。
/controllers/foo.php
/controllers/bar.php
或
/controllers/foo/baz1.php
/controllers/foo/baz2.php
/controllers/bar/baz1.php
/controllers/bar/baz2.p hp
有人可以举一些例子当我可能想要做到这一点和一些示例控制器名称。
有一次我想到的可能是当你有一个主站点(对于用户)和一个管理站点(对于客户)。
所有反馈和建议表示赞赏
通常控制器处理代表相应数据库表的模型。因此,如果您有桌面用户和帖子,您的应用将具有模型用户和帖子,因此控制器用户和帖子。这是典型的RoR方式,在许多PHP MVC框架中使用。此类应用程序中的URL看起来如下:
/controller/action/parameter1/parameter2/...
i.e.
/users/edit/1/
or
/posts/new/
并且动作对应于控制器类方法。实际上,我认为它在MVC架构中事实上已经变成了标准,因为它看起来很自然和合乎逻辑。
几乎只要你有一个不同的任务来完成。如果您有涉及处理用户的事情,请命名您的控制器用户。无论如何,请适当命名操作(创建,编辑,更新,删除,搜索等)。如果你有什么东西只是搜索,把它命名为search.whatever。等等。一种简单的方法来记住这种事情是从RESTful RFC(对不起,不知道那个实际的RFC号码是什么),沿着something.com/noun/verb的行,其中名词==所有 - 包含此控制器处理的“事物”和动词==正在执行的动作(参见上文)。至少这是一种方法。
在您的应用程序中,如果您正在使用User,Employee,Department,那么您将在3个类中定义它们,对吧?现在为每个类创建控制器:UserController,EmployeeController,DepartmentController等。
例如:
用户/添加/
用户/编辑/ 1/
用户/删除/ 1/
雇员/添加/
雇员/编辑/ 1/
雇员/删除/ 1/
部门/地址/
部门/编辑/ 1/
部门/删除/ 1/
但如果我得到了一切的方法,不能让用户输入这个到浏览器,它会删除的东西? – 2010-04-14 10:17:15
你必须检查请求是否被授权。如果未经授权,则重定向到登录页面。你必须为此写一个方法。 在ASP.NET MVC中,如果你使用[Authorize]属性和你的方法(Actions),那么这将防止未经授权的访问。 – muktadiur 2010-04-20 04:36:26
但如果你想做一件事情,不会只访问1个表,但多个。例如。如果我创建了一个已标记的线程,则它跨越3个表(线程,标记和thread_tag_map)。典型的多对多关系。什么控制器将被使用,以及什么型号?你能否在这种情况下描述流程? – 2010-04-13 03:00:47
模型彼此相关。想象一下,如果你使用/ posts/view/1 /显示帖子。这意味着控制器使用的是Posts,而模型是Post,WHICH访问相关模型的Tag和Comment。相关模型可以访问彼此的方法来检索数据。 – Sergei 2010-04-13 03:44:24