我已经苦苦挣扎了一段时间,正是如何使用MVC框架重新编码基于页面的PHP应用程序.仅仅是为了背景,我不得不将应用程序转移到MVC,因为我的老板正在制作我.无论如何,我坐下来打印出目录结构.然后我开始尝试计划如何将这些页面转换为控制器/动作对.有些事情似乎很直接.例如,我有几页专门用于添加/编辑/删除用户.这很容易创建一个"用户"控制器,并添加添加/编辑/删除的方法或操作.我遇到问题的地方在于决定何时实际创建一个控制器,而不是只做一个动作,因为它并不总是那么明确.例如,登录控制器与用户/登录,或寄存器控制器与用户/寄存器.对我来说,
另一个例子是,我有大约12个用于创建"计划"的表单页面.在我脑海中,我认为我需要创建一个"计划"控制器,然后每个旧的页面将成为一个动作.所以我有一个控制器有12个动作(方法).对我来说问题是,虽然这些页面中的所有12页都是数据输入表格,但最终构成了这个"计划",这是他们共同拥有的.每个页面在数据库中使用不同的表,并且彼此之间没有任何其他共同点.基本上通过创建一个"计划"控制器,我只是真的使用它作为分组机制; 不一定使用它,因为它们有相互关联的东西.至少在上面的"用户"控制器示例中; 这些行动中的每一个都使用相同的"
我想它只是归结为让我自己使用控制器作为层次结构实体而不是对象/动作.看起来很容易使用控制器以错误的方式陷入陷阱.有谁知道我在说什么?希望它不会太混乱.
编辑:如果我尝试坚持每个视图一个控制器; 然后,我会将每个请求的代码保持在最低限度.这是最好的方法吗?
编辑:从每个人的意见来看,似乎每个视图的一个控制器不符合我的最佳利益.我仍然有一些担忧,因为看起来控制器可能会匆忙变胖,但这是另一个讨论.我还有一些问题,何时决定使用控制器而不是动作.一个很好的例子是堆栈溢出本身.在页面顶部,您有一个"问题"选项,我们可以假设将您带到"问题"控制器.我这样说是因为在右侧您可以选择"提出问题",URL指向"问题/提问".这是有道理的,你使用问题控制器的ask方法.令我困惑的是,您在菜单上有"未答复"选项.它看起来像是一个控制器.为什么它不仅仅是问题控制下的行动,如"问题/未答复"?这就是我变得浑浊的地方.
我有一个表单,用户需要填写需要识别位置的位置.我在表单上有纬度和经度输入字段.我也在寻找十进制lat和long.我想要的似乎很简单.我只想要一个用户可以点击的链接,弹出地图(谷歌或雅虎),他可以使用地图找到位置,只需点击它,这将自动填充lat的两个输入字段和从地图上看很久.有没有人这样做过?
我目前在使用PHP时使用CodeIgniter作为我的首选框架.我正在努力解决的一个问题是"页面"的概念,以及如何在MVC中正确表示.据我所知,CodeIgniter有一个前端控制器,它委托给页面控制器.在我的思考过程中,每个页面都有自己的控制器.我经常看到有人使用填充了许多方法的页面控制器.所以在这个意义上,每个动作都成为它自己的页面.
我从来没有真正喜欢将许多方法填充到一个控制器中的想法,因为如果你一次只需要一个或两个方法,那么似乎会有太多的开销.每个页面拥有自己的控制器似乎更合理,并且操作只对应于您可以在该特定页面上执行的操作.我是否以错误的方式思考这个问题?
更令人困惑的是,我会注意到在一些Web应用程序中,他们将有一个控制器,它将有多种方法(即登录,注册,查看,编辑等),但在其他人实际上他们实际上有一个登录控制器,和寄存器控制器."页面控制器"的正确用法是什么?
1)您网站的主页在哪里适合"控制者"?我见过有些人使用"页面"控制器来处理静态页面,例如,关于,回家,联系等等,但对我来说这似乎不是一个好主意.为您的主页创建一个独特的控制器是一个更好的选择吗?毕竟,它可能需要访问多个模型,而且并不是真正适用于整个,每个模型理论的一个控制器,一些人使用.
2)如果您需要一个用于多种类型用户的仪表板,那么这将是一个仪表板控制器,它将根据哪个用户切换代码,或者您是否会在每个用户的每个控制器中说出仪表板操作?例如,管理员/仪表板,帐户/仪表板等.
3)在我看来,使用整个简单的CRUD示例在尝试解释控制器时就像一个魅力,但是一旦你通过这些简单的功能,它就会崩溃并导致你的控制器变得笨拙.当其他人在用户控制器中创建登录功能时,为什么有些人会选择创建登录控制器?我认为的一个原因是我们很多人来自页面方法背景,并且很难将控制器视为"对象"或"名词",因为页面并不总是以这种方式工作.例如,为什么你想创建一个"页面"控制器来处理真正与彼此无关的页面只是为了让一个"容器"适合于操作.对我来说似乎不对.
4)控制器是否应该更多地与用例相关而不是可以执行操作的"对象"?出于所有密集目的,您可以创建一个用户控制器来执行整个应用程序中的每个操作.或者你可以按照某些人喜欢的说法为每个"关注区域"创建一个控制器.或者,如果需要,您可以为每个视图创建一个控制器.有太多的余地使得很难找到一致的使用方法.
控制器可能不应该是这种混乱,但由于某种原因,它们让我感到困惑.任何有用的评论将不胜感激.
在我的数据库中,我目前有两个表几乎相同,除了一个字段.
为了快速解释,通过我的项目,每年企业向我提交他们销售的供应商列表,并从中购买东西.由于这是每年进行的,我有一个叫做的表sales和一个叫做的表purchases.
因此,在sales表中,我将有领域,如:BusinessID,year,PurchaserID等,以及完全相反会在purchases表中,除了会有SellerID.
所以基本上两个表都是完全相同的字段,除了PurchaserID/ SellerID.我继承了这个系统,所以我没有这样设计DB.我正在辩论将这两个表梳理成一个叫做表的表suppliers,只是添加一个type字段来区分它们是卖给还是购买.
这听起来像个好主意吗?关于为什么这不是一个好主意,我有什么遗漏吗?
我正在开发一个项目,并且已经开发了系统必须执行的高级用户需求.这个项目是一个基于CodeIgniter框架构建的php Web应用程序.现在,我正在尝试将这些要求进一步细分为控制器/操作.做这个的最好方式是什么?
我正在考虑使用一个包含四列的表创建一个word文档.第一列将是控制器的名称,第二列将具有操作,第三列将具有特定于操作的视图的名称,第四列将显示哪些用户可以访问该操作.这听起来像个好主意吗?
我喜欢构建应用程序的界面第一种方法,但实际上,在创建原型界面之前,我需要知道我需要哪些视图.
任何人都可以帮我解决如何规划应用程序和任何可能有用的文档吗?