【发布时间】:2013-08-18 12:10:21
【问题描述】:
我应该如何在 PHP 中的 mvc 设计模式中构建目录,以便能够在不同视图的“后端”和“前端”中使用相同的模型和控制器。
我做了什么
我正在尝试使用 PHP 作为服务器端语言来构建一个网站,并致力于使用 MVC 设计模式。在我的本地主机(xampp)中,我创建了如下文件夹结构:
htdocs -- mvc
|---- controllers
|---- models
|---- views
|---- library
|---- system-admin (backend)
|___ controllers
|___ models
|___ views
|___ index.php (single entry point - backend)
|___ .htaccess
|---- index.php (single entry point - frontend)
|---- .htaccess
我尝试实现基本的“登录系统”并创建了“Login_Controller”和“Login_Model”文件。
我感到困惑
我怎样才能同时使用backend 和frontend 中的“Login_Controller”和“Login_Model”,同时为每个视图使用单独的视图。我的意思是,管理员登录的 url 将是:
http://localhost/mvc/system-admin/login/ 和站点用户登录的 url 将是:
http://localhost/mvc/login/。
我正在使用twitter-bootstrap 框架设计backend,但frontend 的设计将由其他可能不使用我使用过的框架的人完成,因此我需要不同的视图。 backend 和 frontend 都将共享来自 library 的文件。有些模型和控制器也是共享的(例如 Login_Model 和 Login_Controller),有些不是(例如 Dashboard_Model 和 Dashboard_Contoller 我认为只会在后端使用)。
我需要什么
我需要一些指导来构建我的目录并判断我当前的文件结构。我从未使用过任何设计模式(singleton :-) 除外)或任何 PHP 框架,因此我无法决定如何构建文件。
【问题讨论】:
-
controllers/admin , controllers/users。然后你可以在你的库中放一些东西来检查用户的角色,然后重定向到相应的控制器上。对于脚本和 css 你可以把它放在mvc/assets -
后端和前端是分开的模块,所以它们应该分开
controllers、views等文件夹。但是你可以有共同的models和libraries。 -
登录前如何查看角色。如果有人注册为管理员,那么他将转到
http://localhost/system-admin/login,其他人将转到http://localhost/login登录。我的任务是使用同一个控制器(Login_Controller)显示不同的登录页面(视图)。以及如何? -
感谢您的评论,我会按照您的建议尝试多个控制器,谢谢。
-
这里有一个提示:不要放入您不希望用户打开的
DOCUMENT_ROOT文件。您的大部分应用程序应位于DOCUMENT_ROOT之外。此外,模型不是一个类。模型是一个层。
标签: php directory-structure application-design