和Zend Framework 一起成长(三)

上接:和Zend Framework 一起成长(二) 共同的 HTML 代码 很快,明显地在我们的视图里有许多相同的HTML 代码。我们把他们提取到两个文件header.phtml 和footer.phtml 中,这两个文件放在脚本目录中。我们用它们存放从视图模版里提取的“共同的”HTML: 新文件是:zf-tutorial/application/views/scripts/header.phtml 再一次,我们的视图需要修改: zf-tutorial/application/views/scripts/index/index.phtml zf-tutorial/application/views/scripts/index/add.phtml zf-tutorial/application/views/scripts/index/edit.phtml zf-tutorial/application/views/scripts/index/delete.phtml 风格 尽管这仅仅是个教程,我们需要CSS 文件来使我们的程序看起来使可展示的。因为URL 不指向正确的根目录,我们不知道如何定位CSS 文件,这会导致一个微小的问题。为了解决它,我们使用getBaseURL()函数,它是请求的一部分并把它传递给视图。这提供给我们所不知道的一点URL。修改 IndexController::init() 看上去象这样: zf-tutorial/application/controllers/IndexController.php 我们需要把CSS 文件添加到header.phtml 的一节中: zf-tutorial/application/views/scripts/header.phtml 最后,我们需要一些 CSS 风格: This should make it look slightly prettier! 数据库 既然我们从显示视图里分离了程序的控制, 是时候看一下程序中的模型部分。记住,模型是处理程序的核心意图(所谓的“business rules”)因此,对我们来说就是数据库。我们将利用Zend Framework 中的 Zend_Db_Table 类来操作数据库中表的插入,更新和删除记录。 配置 为了使用Zend_Db_Table,我们需要告诉它哪个数据库(连同用户和密码)将被使用。因为我们不愿意在程序中hard-code,所以我们用一个配置文件来保存这些信息。 Zend Framework 提供了一个Zend_Config 来提供灵活的面向对象访问配置文件。此刻,配置文件可以是一个PHP 数组,一个INI 文件或者XML 文件。我们将使用INI 文件: zf-tutorial/application/config.ini QUOTE: [general] db.adapter = PDO_MYSQL db.config.host = localhost db.config.username = rob db.config.password = 123456 Page 11 of 18 db.config.dbname = zftest 显然,你应该使用你自己的用户名,密码和数据库名,而不是我的!使用Zend_Config 非常容易: QUOTE: $config = new Zend_Config_Ini('config.ini', 'section'); 注意在这个例子中,Zend_Config_Ini 从INI 文件中加载一个section,而不是每一个section(尽管如果你想,所有的section 都可以被加载)。它支持section 名字中的符号并允许加载另外的section。Zend_Config_Ini 还认为参数中的“点”等级分离符,它允许把一组相关的参数组成一个组。在我们的config.ini 里,主机,用户名,密码,数据库名参数都是在组$config->db->config 之下。我们将在启动文件里加载配置文件(index.php) Relevant part of zf-tutorial/index.php 修改的部分是黑体字。我们加载我们将要用的类(Zend_Config_Ini 和Zend_Registry)并加载application/config.ini 中的’general’section 到$config 对象。最后,我们分配$config 对象给注册表,这样它可以在程序的任何地方被取出来使用。 注:在这个教程里,我们实际上不需要把$config 存到注册表里,但是在“真正的”项目中,你可能在INI 文件里有很多配置信息,而不仅仅是数据库。同样,要知道如果你不小心,注册表有一点象全局变量并导致对象之间的依赖,而他们并不互相依靠。 建立Zend_Db_Table 为了使用Zend_Db_Table,我们需要告诉它我们刚刚加载的数据库配置信息。我们需要建立一个Zend_Db 的实例并用静态函数Zend_Db_Table:: setDefaultAdapter()来注册它。强调一下,我们在启动文件里完成它(黑体字): Relevant part of zf-tutorial/index.php 建表 我打算用MySQL,所以建表SQL 语句如下: QUOTE: CREATE TABLE album ( id int(11) NOT NULL auto_increment, artist varchar(100) NOT NULL, title varchar(100) NOT NULL, PRIMARY KEY (id) ) 在MySQL 的客户端运行这个语句,例如phpMyAdmin 或者标准的MySQL 命令行客户端。 插入测试 Albums 我们还要给表中插入一些记录来测试主页中的检索功能。我打算用Amazon.co.uk 中”Hot100”CD 中的头两条: QUOTE: INSERT INTO album (artist, title) VALUES ('James Morrison', 'Undiscovered'), ('Snow Patrol', 'Eyes Open'); 模型 Zend_Db_Table 是一个abstract 类,所以我们派生一个专门管理album 的类。如何命名类无关紧要,但类名和表名用同样的名字比较有意义。这样,类名就叫做Album 因为表名是album。为了告诉Zend_Db_Table 它将管理的表名,我们必须设置保护属性$_name 为表名。 并且,Zend_Db_Table 假定表有一个主键叫做id,它能够自动增长。如果需要的话,这个字段可以更改。我们将保存我们的Album 表到模型目录: zf-tutorial/application/models/Album.php 不是很复杂吧?!我们很幸运,我们的需求非常简单并且Zend_Db_Table 提供了所有我们需要的函数。然而,如果你需要特殊的函数管理你的模型,你可以把它们放到这个类里。一般来说,附加的函数将是附加的”find”类型方法,它使你要寻找的精确数据的集合有效。你也可以告诉Zend_Db_Table 关于相关的表并且它也可以获取相关的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值