- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用Yii和PHP5进行web的敏捷开发
第十二章:迭代9:添加管理模块
到目前为止,我们已经给TrackStar应用程序增加了很多功能。如果你还记得在第8章,我们介绍了使用基于用户角色的层次结构来限制用户访问某些功能。这有助于限制对一些单一项目的管理职能的访问。例如:在一个特定的项目中,你可能不希望让所有的成员都有删除权限。我们为用户分配到一个项目内的特殊角色来实现基于角色的访问控制,然后控制这些角色是否有访问该功能的权限。
然而,我们尚未解决的是整个应用程序的管理需求。例如TrackStar Web应用程序经常需要的有一个非常特殊的用户拥有所有的管理权限。其中一个例子就是让系统的每一个用户拥有CURD操作,而不仅仅是项目。我们应用程序的系统管理员应该有以下权限:能够登录,删除或者修改用户、项目、问题,管理所有的评论,等等。同时,我们经常建立适用于整个应用程序的额外功能,如能给所有用户发布站点系统信息,管理电子邮件运动,打开/关闭某些应用功能,管理角色的层次,改变站点主题,等等。因为管理员的权限与用户的权限有极大的不同,把这些功能和应用程序分离是一个好想法。我们将通过Yii模块建立所有的管理功能来完成这个分离。
12.1 迭代计划
在这个迭代中,我们将集中完成以下开发任务:
? 创造一个新的模块来存放管理功能
? 为系统管理员建立系统广播功能,用户可以在项目列表页面查看
? 为应用模块添加一个新课题
? 创建一个新表保持系统消息数据
? 为系统信息生成所有的CURD操作
? 只允许管理用户使用新模块中的功能
? 在项目列表页面显示新系统信息
12.2 模块
模块类似于一个大型应用程序中的小型应用程序。它有与应用程序类似的结构,包含模型、视图、控制器及其他支持组件。然而,模块不能作为独立的应用程序,它们必须嵌入某一个应用程序。
Modules在帮助你的应用程序模块化架构方面很有用。大型的应用程序经常可以分成几个离散的应用程序,这些离散的应用程序也可以用模块来构建。站点功能,如添加一个用户论坛,用户博客或站点管理员功能都是一些例子,说明从主站点功能分离出来的功能,可以让它们单独开发,并且容易在未来的计划中重用。我们将在应用程序中不同的位置建立存放管理功能的模块。
12.3 创建一个模块
使用我们的老朋友,Gii代码生成工具创建一个新模块是很容易的。伴随着我们的URL的改变,要通过http://localhost/ trackstar / gii来访问该工具。打开后,在左边的菜单中选择Module Generator选项。你将看到下面的画面:
我们需要给模块取一个唯一的名字。由于我们正在创建一个管理模块,我们可以命名为admin。在Module ID内输入admin,点击Preview按钮。如下图所示,它会向你展示它将会生成的所有文件,让你在创建之前预览这些文件:
然后点击Generate按钮来生成这些文件。由于web服务器进程它自动创建文件夹和文件的要求,所以要确保你的/protected文件夹是可写入的。下面的截图显示一个成功的模块生成:
让我们更进一步的看看这个自动生成的模板。Yii中模块是以一个文件夹组织的,文件夹的名字就是该模块的名字。默认情况下,居所有的模块保存在/protected/modules目录下。每个模块文件夹的结构都与主应用程序非常相似。这个指令为我们所做的是创建admin模块建立脚手架下面为我们展示了模块命令行为我们建立的所有文件夹和文件该模块类的名字由模块ID (在这里指admin) 和字符串Module联合生成。模块ID的第一个字母大写。所以在我们的例子中我们的模块类文件被命名AdminModule.phpPHP代码:
12.5 主题化一个模块
我们立刻发现这一视图(View)似乎没有应用任何布局(Layout)。有人可能会想,控制器渲染视图时用的是renderPartial(),而不是render()。然而,在检查我们的默认的admin的controller文件,/protected/modules/admin/controllers/ DefaultController.php时,我们可以看到,事实上它使用的是render()方法。因此,我们需要使用一个layout文件(如果有的话)。
问题是在模块中几乎一切都是独立的,包括layout文件的默认路径。网站模块布局的默认路径是/protected/ modules/[moduleID]/views/layouts,在我们的例子中moduleID应该是admin。我们可以看到,在这个文件夹中没有文件,所以没有应用默认布局。
在这里多讲一点。在上一次迭代中,我们实现了一个名为new的新主题。我们也可以通过这个主题管理我们所有的模块view文件,包括la
您可能关注的文档
最近下载
- T∕CACM 1270-2019 中医内科临床诊疗指南 脓毒症.pdf
- 合作供货合同协议书范本.docx VIP
- 广州工商学院《高等数学(II)》2025 - 2026学年第一学期期末试卷.docx
- Unit 1 School Life Lesson 2(课件)2025-2025学年度冀教版英语四年级上册.pptx VIP
- 2020年一建《建设工程法规及相关知识》真题(含答案解析).pdf VIP
- 化工安全生产实务注册安全工程师考试(初级)知识点必刷题详解.docx VIP
- 2025贵州毕城开发集团有限公司及下属子公司招聘10人笔试模拟试题及答案解析.docx VIP
- 申请中英文成绩单的办事程序-广州大学教务处.doc VIP
- 前置胎盘的诊断与处理指南(2020版).docx VIP
- 广州工商学院《高等数学Ⅱ》2025-----2026学年期末试卷(A卷).docx VIP
文档评论(0)