Zend Framework学习日记(2)--HelloWorld篇(转)
Zend Framework学习日记(2)--HelloWorld篇
这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练习。
(1)新建工程(Windows环境下)
打开CMD,将目录切换到你将要新建工程所在的目录下,输入“zf create project HelloWorld”,如下
- D:/workphp/www>zf create project HelloWorld
- Creating project at D:/workphp/www/HelloWorld
- Note: This command created a web project, for more information setting up your V
- HOST, please see docs/README
- Testing Note: PHPUnit was not found in your include_path, therefore no testing a
- ctions will be created.
zf会自动建立一些目录和文件,目录结构如下
关于HelloWorld工程的目录结构:
- application目录是源码放置的地方。由于Zend框架采用MVC模式,因此有controllers、models和views子目录,而congfigs子目录放置配置文件。
- docs目录放置文档;library目录放Zend Framework(由于Zend Framework放置在别处,并加入了include_path,所以该目录为空);public目录比较重要,它就是站点发布的目录,该目录下的文件都可以通过浏览器访问;tests目录是单元测试的目录。
- .zfproject.xml是zf工具的记录文件,有些zf命令会更新该文件。
注:关于Zend Framework的MVC模式,请参考http://framework.zend.com/manual/en/learning.quickstart.intro.html
(2)测试Zend Framework
确保Apache服务器已开启,在浏览器中输入“http://localhost:8088/HelloWorld/public/”,我修改了Apache的默认端口(怎么修改,我的另一篇文章有提到,这里)。这时应该出现下面的界面,说明Zend Framework已经能正常工作了,gx!(如果没有,请参考“Zend Framework学习日记(1)--环境搭建篇”)
注:关于url的规则,简单点说就是,http://域名(IP)/public/controller/action,一个controller可以多个action,action就是处理view的,controller控制这些action,默认有IndexController和indexAction(见controllers目录下的IndexController.php),因此这里完整的url路径应该是http://localhost:8088/HelloWorld/public/index/index。具体参考Zend Framework manual。
(3)采用Two Step View设计模式
确保CMD在HelloWorld目录下面,输入“zf enable layout”,如下
- D:/workphp/www/HelloWorld>zf enable layout
- Layouts have been enabled, and a default layout created at D:/workphp/www/HelloW
- orld/application/layouts/scripts/layout.phtml
- A layout entry has been added to the application config file.
会发现application目录多了一个layouts目录以及该目录下的子目录scripts和文件layout.phtml。如果你仔细找找,会发现“Welcome to the Zend Framework”界面的代码,是在views目录的scripts->index->index.phtml ,如下
安装了Zend Studio,可以直接打开,也可以用“记事本”或“写字板”打开。将index.phtml里面的内容全部删除,加入下面代码
- <div id="welcome">
- Hello World!
- </div>
再打开刚才自动产生的layout.phtml(HelloWorld->application->layouts->scripts),发现内容只有一行代码,如下
- <?php echo $this->layout()->content; ?>
在此基础,我添加了一些代码,完善成一个简单的html文件,如下
- <html>
- <head>
- <title>HelloWorld!</title>
- <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
- <mce:style type="text/css"><!--
- #welcome { color: red; }
- --></mce:style><style type="text/css" mce_bogus="1"> #welcome { color: red; }
- </style>
- </head>
- <body>
- <?php echo $this->layout()->content; ?>
- </body>
- </html>
显然,可以看出index.phtml就是这里echo输出的内容,我只不过添加了一些html、head等标签。这就是Two Step设计模式,有2个视图,layout.phtml就是整体布局,index.phtml就是具体的内容(这是我个人理解)。记得保存上述修改,再次刷新浏览器,效果如下
可以看到,标题为“HelloWorld”,文字HelloWorld也变为红色。文章到此结束。
代码已上传到http://download.csdn.net/source/3200862,可供下载。欢迎交流!
Zend Framework学习日记(2)--HelloWorld篇(转)的更多相关文章
- Zend Framework学习日记(1)--环境搭建篇(转)
Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...
- Egret入门学习日记 --- 第十篇(书中 2.9~2.13节 内容)
第十篇(书中 2.9~2.13节 内容) 好的 2.9节 开始! 总结一下重点: 1.之前通过 ImageLoader 类加载图片的方式,改成了 RES.getResByUrl 的方式. 跟着做: 重 ...
- Egret入门学习日记 --- 第四篇
第四篇(学习篇) 好了,今天继续把昨天的问题解决了. 今天见鬼了. 现在界面又出来了.唯一我动过的地方,应该就是这里: 是的,我点了一下刷新.之后,不管我怎么创建新的EXML文件,放在src目录,还是 ...
- Egret入门学习日记 --- 第十三篇(书中 5.2~5.3节 内容)
第十三篇(书中 5.2~5.3节 内容) 写日记已经十天多了,我发现越到后面,我书写的方式越来越程序化. 感觉渐渐失去了人类所谓的感情似的. 不过,没想到的是,书中的内容,很少出现了错误,我一路过来到 ...
- Egret入门学习日记 --- 第五篇(书中 3.5节 内容)
第五篇(书中 3.5节 内容) 今天得把昨天的问题解决了才行. 去了Q群,碰到一位大大,他给我解惑了.Thanks♪(・ω・)ノ 这是我之前按照书上写的方式写的,并没有效果. 然后大大给我解答了: 后 ...
- Egret入门学习日记 --- 第十一篇(书中 4.1~4.6节 内容)
第十一篇(书中 4.1~4.6节 内容) 好了,到了这篇开始,前三章都记录完了. 接下来就是到第四章了. 4.1节 的内容总结一下重点: 1.resource目录下default.res.json文件 ...
- Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)
第八篇(书中 2.0~2.6节 内容) 好!开始把前三章的内容录入进来. 但是!由于第一章说的内容都是在介绍白鹭引擎的背景信息,我就不在日记中写了. 直接开始从第二章写起. 2.0节 中提到了IDE( ...
- Egret入门学习日记 --- 第六篇(书中 3.6~3.9节 内容)
第六篇(书中 3.6~3.9节 内容) 在本篇写之前,还是要为昨天写的日记道歉才行,差点就误人子弟了. 没想到在程序员界最低级的错误 “单词拼写错误” 还是会经常犯. childrenCreated ...
- jQuery Mobile学习日记之HelloWorld
这里是本人学习jQuery Mobile的过程,主要用于记录,过程中有不对的地方或不严谨的地方,欢予以指出纠正,非常感谢! 1.首先是下载安装以下文件: [Opera Mobile Emulator] ...
随机推荐
- SQL存储过程+游标 循环批量()操作数据
本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.M ...
- eclipse - copy类的全名
由于多次操作,感觉eclipse应该提供这个功能,网上搜一下,发现需要安装插件. 下载地址为 http://www.jave.de/eclipse/copyfully/copyfully_1.2.0. ...
- BitmapImage使用FileStream读取文件
var bitmapImage = new BitmapImage(); using (FileStream fs = new FileStream(file.FullName, FileMode.O ...
- php 设置报错等级
定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别. 函数语法: error_reporting(report_level) 如果参数 level 未 ...
- 27 Java动态加载第三方jar包中的类
我加载的方法是://参数fileName是jar包的路径,processorName 是业务类的包名+类名public static A load(String fileName, String pr ...
- EIGRP认证 配置 (仅仅是命令 原理自己去看书) 转自:http://blog.163.com/s_u/blog/static/13308367201111771831631/
EIGRP认证 目的:掌握EIGRP的MD5认证 拓扑:这里IP配置我就不写出来了,应该对大家来说是非常简单的事了,就要细心一点就可以了.首先我们在R1上启用MD5认证R1(config)#key c ...
- 正则表达式中/g的含义
关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?” 为了解答“正则表达式(/[^0-9]/g,'')中的" ...
- 使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容)
使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供 ...
- :after伪类+content内容生成经典应用举例
一.简单说说content内容生成 content内容生成就是通过content属性生成内容,content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容. ...
- java J2EE学习入门
首先学习JAVA基础编程,大学教材就是最简单的了!象写写Helloworld啊 输出水仙花数啊 玩些简单的,慢慢在研究研究流啊,都可以了.然后学习简单的JSP,这个时候多上网上DOWN一些原码.多看看 ...