安装Zend框架和Zend_第1页
安装Zend框架和Zend_第2页
安装Zend框架和Zend_第3页
安装Zend框架和Zend_第4页
安装Zend框架和Zend_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安装Zend框架和Zend_ToolZend Framework 配置要求· PHP版本大于PHP 5.2.4。· Web 服务器支持重写,如Apache mod_rewrite。· 服务器开启重写功能,如Apache bbb.conf 配置文件,需设置AllowOverride None 改为 AllowOverride All,以支持.htaccess 文件。Zend Framework 安装这里以Ubuntu为例(其他Linux/Unix系统类似)。首先到Zend 官网 下载最新Zend Framework。版本选择:Zend

2、Framework 1.11.11 Minimal 即可,Zend Framework 1.11.11 Full 包括额外的库(/extras/library/ZendX/),以及一些demo等,有需要可下载Full版本)wget bbb:/framework.zendaaa/releases/ZendFramework-1.11.11/ZendFramework-1.11.11-minimal.tar.gz下载完成可解压到想要的任意目录。比如/usr/share/:sudo tar -zxvpf ZendFramework-1.11.11-minimal.tar.gz -C /usr/sha

3、re添加Zend library解压以后,要设置确保解压文档中 Zend Framework 的 library 目录在 php 配置的 inclue_path 变量的目录下。大概有三种方法:1. 执行 php -i | grep include_path 得知当前php的include_path路径,比如/usr/share/php,再将library目录下的Zend文件夹整个复制/移动到/usr/share/php/目录下。2. 修改php.ini 配置,将解压后的library目录路径添加到include_path变量中,(php.ini

4、文件路径查询:php -i | grep php.ini;注意ubuntu 11.04是将用于cli和Apache的 php.ini 配置文件分开的,cli是/etc/php5/cli/php.ini,Apache是/etc/php5/apache2/php.ini)。而我们要在/etc/php5/apache2/php.ini文件中PHP部分加入一行:include_path = ".:/usr/share/ZendFramework-1.11.11-minimal/library"在Web前台测试时,如果修改了php.ini 文件,要重启Apache

5、,改动的设置才会生效)。3. 第三种方法是不用将Zend的library添加到include_path中,而是在创建zf项目后,将library/Zend 目录复制到(或软链接到)项目的library 目录下(下一节将介绍)。添加Zend Framework命令行工具我们看到解压的Zend Framework 文档目录中还有一个bin目录,这是配置ZF命令行工具的脚本,把里面的zf.sh可执行文件复制到ubuntu系统的可执行目录下就行。当然也可以不复制或移动文件,在系统可执行目录下使用软链接将bin链接到这个zf.sh文件。比如我们把它放在和php的bin目录同一级(php目录查询which

6、 php):sudo ln -s /usr/share/ZendFramework-1.11.11-minimal/bin/zf.sh /usr/bin/zf然后在命令行终端执行zf show version测试,显示Zend Framework Version: 1.11.11,则表明zf命令行工具安装配置完成。若是Windows 系统,Zend tool 的设置请见: Windows设置Zend Framework 命令行工具.创建Zend Framework 项目上一节我们安装配置了Zend 框架,现在我们可以开始创建Zend Framework 项目了。本教程以创建一个保存音

7、乐专辑的Web 简单应用为例。下面是这个web应用的简单需求:· 首页:显示专辑列表,并为每张专辑显示编辑/删除的链接,以及添加新专辑的链接。· 添加新专辑:提供一个添加新专辑的表单。· 编辑专辑:显示一个编辑专辑的表单。· 删除专辑:确认删除并删除专辑功能。相应地设计数据库结构如下(音乐专辑包括artist艺术家和title专辑名称):Field nameTypeNull?NotesidintegerNoPrimary key, auto incrementartistvarchar(100)Notitlevarchar(100)No开始创建ZF应用在

8、命令行窗口跳转到Web服务器根目录,使用zend framework 命令行工具zf命令创建一个project 项目,比如名称为zftest:cd /var/wwwzf create project zftest提示:Note: This command created a web project, for more information setting up your VHOST, please see docs/READMETesting Note: PHPUnit was not found in your include_path, therefore no testing acti

9、ons will be created.原来Zend Framework 开始官方支持PHPUnit了,Pear安装PHPUnit单元测试:bbb:/pear.phpunit.de/sudo apt-get install php-pearsudo pear channel-discover pear.phpunit.desudo pear channel-discover pear.symfony-projectaaasudo pear upgrade (Note:phpunit/PHPUnit requires PEAR Installer (version >= 1.9.4), i

10、nstalled version is 1.9.1)sudo pear install phpunit/PHPUnit上面的Zend_Tool 命令行工具zf create project 创建项目时自动创建了各级目录和文件,仔细看下:· zftest/application 这是zf的主体程序文件,包括配置文件、MVC的3个目录controllers/models/views、Bootstrap.php。· zftest/docs 这是程序文档或手写的记录备忘等,实际应用中不上传。· zftest/library 这是上一节说到的添加Zend library的第

11、三种方法,如· cd /var/www/zftest/library;ln -s /usr/share/ZendFramework-1.11.11-minimal/library/Zend· zftest/public 这是网站根目录访问路径。ls -a  ./public可以看到还有一个隐藏的.htaccess文件。· zftest/tests 测试目录。服务器配置文件比如Ubuntu 下配置apache:sudo vi /etc/apache2/sites-available/zftest,将docs/README.txt 中的vhost配

12、置复制进去并保存:<VirtualHost *:80> DocumentRoot "/var/www/zftest/public" ServerName zftest.local # This should be omitted in the production environment SetEnv APPLICATION_ENV development<Directory "/var/www/zftest/public"> Options Indexes MultiViews FollowSymLinks AllowOverr

13、ide All Order allow,deny Allow from all </Directory></VirtualHost>sudo a2ensite zftestsudo /etc/init.d/apache2 reload修改/etc/hosts 把zftest.local 指向。访问bbb:/zftest.local (或bbb:/localhost/zftest/public/) 就能打开显示zf图标的页面了。zftest 这个Zend Framework 项目就算创建好了。如果,不在本地测试,可以在apache2建立项目配置文件因为a

14、pache默认的web主目录在/var/www下为了能够让apache自动定位到指定目录下的web应用,在/etc/apache2/conf.d中建立一个关于项目的配置文件,称为zftest.confCommand line: sudo gedit /etc/apache2/conf.d/zftest.conf文件内容如下: <IfModule alias_module> Alias /zftest "/home/”xxx“/ZFTest/public/" <Directory "/home/”xxx“/ZFTest

15、/public/"> Allow from all RewriteEngine on RewriteBase /zftest RewriteCond %REQUEST_FILENAME !-f RewriteRule !.(css|js|jpg|gif|png|swf|flv)$ index.php Options FollowSymlinks MultiViews AllowOverride All </Directory> </IfModule> 修改

16、public里的.htaccess文件。.htaccess是隐藏文件,可通过查看显示隐藏文件。文件内容如下: RewriteEngine On RewriteBase /zftest RewriteCond %REQUEST_FILENAME -s OR RewriteCond %REQUEST_FILENAME -l OR RewriteCond %REQUEST_FILENAME -d RewriteRule .*$ - NC,L RewriteRule .*$ index.php NC,L Zend Fram

17、ework 引导启动 BootstrappingZend Framework 的控制器使用前台控制器(Front Controller)的设计模式,将所有的前台请求都由路由引导到单一的index.php文件入口。这确保了运行应用程序能够建立一个稳定无误的环境。ZF框架是通过zftest/public/.htaccess文件的设置将所有请求都跳转到zftest/public/index.php的,这和 WordPress 等开源应用程序很像。这个index.php 文件是应用程序的入口,它用于创建一个Zend_Application的实例,并进行程序初始化后运行。这个文件同样定义了两个常量:AP

18、PLICATION_PATH 和 APPLICATION_ENV,分别用于定义 application/ 的路径和程序运行环境模式。index.php中默认设置的是production,不过我们已经在上面vhost的配置文件中设置了 SetEnv APPLICATION_ENV development,(这也可以在.htaccess文件中设置)。Zend_Application 组件用于启动应用程序,并用于在配置文件application/configs/application.ini 中设置使用指令。在application/Bootstrap.php 文件中提

19、供了一个扩展 Zend_Application_Bootstrap_Bootstrap 的 Bootstrap 引导类,用于执行任何必须的指定代码。文件 application/configs/application.ini 使用Zend_Config_Ini 组件加载,Zend_Config_Ini 组件知道文件中使用冒号分不同模式继承的逻辑。比如staging : production表示 staging 段继承了production 模式的设置。APPLICATION_ENV 常量定义了我们的程序要加载哪一个环境。在程序开发中我们使用development 环境,而在实际应用环境中,我们

20、使用 production。因为前面我们设置的环境是production,所有放在 application.ini 的 production 部分的设置,就可以立即加载这些改变的配置了。最后,我们可能还可以通过 application.ini 修改当地时区,在production 部分,所有的 phpSettings 值之后加入:phpSettings.date.timezone = “Asia/Shanghai”设置时区为北京时间。Zend Framework 控制器 Controller前面Zend Framework 教程各章节,了解了ZF配置和大概的MVC模型之后,我们可以开始尝试编写

21、应用程序代码了。首先谈下Zend Framework是如何组织每个页面的。zf应用程序的每个页面被当作一个action,多个action 组成 一个controller 即控制器。比如bbb:/zftest.local/news/view 这个网址(或者bbb:/localhost/zftest/public/news/view),News是controller,而view是action。News 控制器可能同时还有list,archived等其他的action。ZF的MVC设计模式同时也支持将多个控制器通过模块modules 的形式组织起来,不过本教程比较简单还没有必要那么做。Zend Fr

22、amework 默认情况下会使用index作为默认的action,比如bbb:/zftest.local/news/这个url,News控制器中的index action将会被执行。同样控制器也有默认的,bbb:/zftest.local/这个网址将执行Index controller中的index view。在这个Zend Framework教程开始,我们先不考虑比如用户登录等相对复杂的东西,在教程的结尾会有更多的介绍。因为本教程只涉及管理专辑的4个页面。因此我们可以将4个页面当作一个controller的4个action。比如:页面ControllerActionHome pageInde

23、xindexAddNew albumIndexaddEdit albumIndexeditDelete albumIndexdelete越复杂的网站将会有更多的controllers,或者将多个controller 通过modules 组织起来。Zend Framework 创建 Controller现在我们可以开始创建Controller了,在Zend Framework 中 Controller 必须是一个命名为Controller nameController的类,其中控制器名称 Controller name 必须大写字母开头。这个类必须写在 application

24、/controllers/Controller nameController.php 文件中。而每一个 action 则是 controller 类中一个命名为action nameAction 的public 函数,其中action名称 action name 全部字母必须小写。所以我们的controller类应该是 application/controllers/IndexController.php 文件中命名为 IndexController 的类,从前面的文件结构我们看到这个文件Zend_Tool已经帮我们创建好了,打开这个文件发现IndexContro

25、ller 类也已经自动创建。接下来我们使用zf命令行工具创建IndexController控制器的其他actions。打开命令行环境并cd到zftest目录,执行命令zf create action add Indexzf create action edit Indexzf create action delete Index这些命令会在IndexController 类中创建3个方法:addAction, editAction 和 deleteAction,同时也会创建相应的view 代码文件(后面会用到)。现在我们就算已经创建好要用到的4个actions 了。每一个action对应的ur

26、l如下:URL Action methodbbb:/zftest.local/ IndexController:indexAction()bbb:/zftest.local/index/add IndexController:addAction()bbb:/zftest.local/index/edit IndexController:editAction()bbb:/zftest.local/index/delete IndexController:deleteAction()访问上面的url会看到输出类似的文本:View script for controller Index and sc

27、ript/action name add。如果出现404错误页面,那可能是你还没有配置Apache 的mod_rewrite 模块,或者没有正确地设置 AllowOverride all (Apache配置文件,.htaccess文件)。Zend Framework 数据库和Models上一节我们创建了含有几个action 函数的 IndexController.php 文件,了解了zf application 应用的大概架构,现在轮到model部分了。model 是处理application应用的业务规则核心部分(“business rule”),在我们的教程中,这也就是数据库。我

28、们将使用Zend Framework 的 Zend_Db_Table类来查找/插入/更新或删除数据库中的行。MySQL数据库配置为了使用 Zend_Db_Table,我们要告诉zf使用哪个数据库,以及用户名和密码。Zend Framework的Zend_Application 组件自带了一个数据库配置文件application/configs/application.ini,我们在这个文件中配置数据库相关信息。打开application.ini 文件,在production 部分的末尾加入以下设置(数据库名称、用户名、密码换成你自己的):resources.db.adapter =

29、PDO_MYSQLresources.db.params.host = localhostresources.db.params.username = rootresources.db.params.password = mysqlpasswordresources.db.params.dbname = zendframeworktutorial数据库将会自动创建Mysql数据库连接,Zend_Db_Table 默认的adapter也会创建。Zend官网有其他可用的resource 插件介绍:bbb:/framework.zendaaa/manual/en/zend.application.a

30、vailable-resources.html创建数据库表我们将使用MySQL数据库来保存专辑信息,MySQL创建数据库以及albums表的SQL语言如下:CREATE DATABASE IF NOT EXISTS zftest default charset utf8 COLLATE utf8_general_ci;use zftest;CREATE TABLE albums (id int(11) NOT NULL auto_increment,artist varchar(100) NOT NULL,title varchar(100) NOT NULL,PRIMARY KEY (id)

31、;在phpmyadmin 等MySQL客户端或标准的MySQL 命令行界面运行上面的语句。插入数据为了演示案例,我们在数据库表中再插入一些样本数据,执行SQL语句:INSERT INTO albums (artist, title)VALUES('Paolo Nutine', 'Sunny Side Up'),('Florence + The Machine', 'Lungs'),('Massive Attack', 'Heligoland'),('Andre Rieu', '

32、;Forever Vienna'),('Sade', 'Soldier of Love');我们有数据保存在数据库中了,下面我们可以写一个简单的model。关于 Zend_Db_Table 和 Zend_Db_Table_AbstractZend Framework 没有提供 Zend_Model 这个类,因为model是你的业务逻辑,这主要由你来决定它怎么工作。不过zf根据你的需求提供了许多组件可供使用帮助完成工作。一种方法是使用model类来表示zf应用中的每一个实体(entity),并使用 mapper 对象加载或保存这个实体到数据库中。这种方法在

33、zf官方教程中有详细介绍:bbb:/framework.zendaaa/manual/en/learning.quickstart.create-model.html。在这个教程中,我们将创建一个扩展Zend_Db_Table类的 model 并使用 Zend_Db_Table_Row。Zend Framework 提供了实现Table DataGateway设计模式的 Zend_Db_Table,用来和数据库中的数据进行交互。注意Table Data Gateway 设计模式在更大型的系统中是有局限性的。同时Zend_Db_Table 也很容易使我们将数据库访问代码放到controller

34、的action方法中。Zend_Db_Table_Abstract 是一个抽象类,从这个抽象类中我们可获得用于管理专辑的类。虽然我们可以任意命名我们的类,但根据数据库表来命名会更有意义一些。我们的project项目有一个由 Zend_Application 实例化的自动加载器,它将一个模块下里面的资源类(resource classes)映射到定义它的目录中。主文件夹application/ 使用Application_前缀。自动加载器使用映射将资源和目录对应起来,如:前缀 - 目录Form -formsModel -modelsModel_DbTable -models/DbTableMod

35、el_Mapper -models/mappersPlugin -pluginsService -servicesView_Filter -views/filtersView_Helper -views/helpers因为我们是根据数据库表命名albums,并使用Zend_Db_Table的,我们的类将会以 Application_Model_DbTable_Albums 命名,保存在applications/models/DbTable/Albums.php 文件中。为了告诉 Zend_Db_Table 要管理哪个表,我们要为表名称设定protected 属性 $_name。同样,Zend_

36、Db_Table 会认为数据库表有一个名为id自动递增的主键,这个field的名称如果有需要也可以更改。使用zf命令行工具:zf create db-table Albums albums文件 applications/models/DbTable/Albums.php 将会被创建,在这个文件中有一个名为 Application_Model_DbTable_Albums 的类,并设定了和这个类交互的数据库表的名称。现在我们要编辑 application/models/DbTable/Albums.php 文件以增加一些功能,models中的文件通常是和数据库交互(读取/插入/编辑/删除数据库表

37、中的数据信息),我们添加 getAlbum(), addAlbum(), updateAlbum() 和 deleteAlbum() 这几个方法如下:<?phpclass Application_Model_DbTable_Albums extends Zend_Db_Table_Abstractprotected $_name = 'albums'public function getAlbum($id)$id = (int)$id;$row = $this->fetchRow('id = ' . $id);if (!$row) throw new

38、 Exception("Could not find row $id");return $row->toArray();public function addAlbum($artist, $title)$data = array('artist' => $artist,'title' => $title,);$this->insert($data);public function updateAlbum($id, $artist, $title)$data = array('artist' =>

39、$artist,'title' => $title,);$this->update($data, 'id = '. (int)$id);public function deleteAlbum($id)$this->delete('id =' . (int)$id);上面我们创建了4个用于和数据库表交互的helper 方法。 getAlbum() 以数组的形式获取一个单一行, addAlbum() 在数据库中创建一个新行, updateAlbum() 更新一个数据库行,deleteAlbum() 删除一个整行。你也可以告

40、诉 Zend_Db_Table 其他相关数据库表并获取相关的数据。下面我们要在controllers 中填入models 中的数据,以及编写view 脚本代码显示它。在这之前,我们先来看看 Zend Framework的view 系统是如何工作的。Zend Framework布局和视图 Layouts viewsZend Framework 的view 组件是Zend_View。这个view 组件的功能是将action函数中的代码和显示页面的代码分开写。Zend_View 工作原理Zend_View 的基本使用方法是:$view = new Zend_View();$view->setS

41、criptPath('/path/to/scripts');echo $view->render('script.php');很明显,如果我们把这段代码放到每一个action函数里面,将会产生很多不是很有意义的重复代码。我们希望在其他地方对view 进行初始化,然后在每个action 函数里面访问那些已经初始化的view 对象。Zend Framework 为此提供了一个叫 ViewRenderer 的 Action Helper。它负责在controller($this->view) 中初始化view 属性,并在action执行后渲染 view 代

42、码。对于渲染过程,首先 ViewRenderer 创建 Zend_View 对象,该对象会在 views/scripts/controller name 目录中查找和 action 名字相同,后缀为.phtml 待渲染的的view 脚本。也就是查找渲染的view 脚本为 views/scripts/controller name/action_name.phtml,要呈现的内容被添加到Response 对象的body中。Response 对象用于收集所有的 bbb headers,body content 以及使用MVC模型产生的异常。然后前台控制器在最后调用的body content后面发送

43、headers。这整个render的过程,Zend_Tool 在创建项目、或使用zf create controller 和 zf create action 添加controllers控制器、action 的时候,就已经帮我们完成了。通用的HTML 代码:Layouts很明显在views 文件中会有很多通用的HTML 代码,比如页面上重复的header 部分和footer部分,甚至sidebar边栏等。这是一个很常见的问题,Zend 框架使用 Zend_Layout 解决这个问题。Zend_Layout 可以允许我们将通用的header、footer和其他代码移动到布局视图文件代码中,这个布

44、局视图代码中包含为要执行的action指定的view 代码。布局文件默认放在application/layouts/ 目录,不过 Zend_Application 允许我们配置Zend_Layout这个资源。我们使用Zend_Tool 创建布局视图代码,它同时还知道如何正确地更新 application.ini 文件。在zftest 目录中我们执行下面的命令:zf enable layout现在Zend_Tool 已经创建了 application/layouts/scripts 文件夹,并在里面创建了一个layout.phtml 文件,同样也更新了application.ini文件,注意到是

45、在production部分添加了一行:resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"在controller action 方法结束之后,也就是整个调用循环的最后,Zend_Layout 将会渲染指定的layout。Zend_Tool 启用layout时,创建的是一个最基础的布局文件,只有一行代码用以显示action的view脚本:<?php echo $this->layout()->content; ?>下面我们添加网站必须的一些代码,打开layouts.phtm

46、l 文件用下面的代码替换:zf-tutorial/application/layouts/scripts/layout.phtml<?php$this->headMeta()->appendbbbEquiv('Content-Type', 'text/html;charset=utf-8');$this->headTitle()->setSeparator(' - ');$this->headTitle('Zend Framework Tutorial');echo $this->doct

47、ype(); ?><html xmlns="bbb://1999/xhtml" xml:lang="en" lang="en"><head><?php echo $this->headMeta(); ?><?php echo $this->headTitle(); ?></head><body><div id="content"><h1><?php echo $this->

48、escape($this->title); ?></h1><?php echo $this->layout()->content; ?></div></body></html>这个布局文件包含非常标准的“外包”的HTML 代码。因为这是一个普通的PHP 文件,我们可以在里面写php代码。里面有一个$this变量,它是在bootstrapping过程中创建的view 对象的一个实例。我们可以使用它来获取已经赋值给view 的数据,以及调用方法。这个方法(即view helpers)返回我们可以输出的字符串。首先我

49、们为web网页的head部分配置一些view helpers 方法,然后输出正确的doctype。在<body>部分,我们创建一个div及包含title的<h1>标签。为了获取当前action要显示的view 代码,我们使用echo $this->layout()->content;这个layout() view helper的内容占位符。这表明action的view 代码是在layout的view代码之前执行的。在渲染任何view 脚本之前,我们要为网页设置好doctype。因为action的 view脚本更早执行,它必须知道现在使用的是哪一个doctyp

50、e。对于Zend_Form也是如此。那么在哪里设置 doctype 呢?打开 application.ini文件,在production部分添加一行:resources.view.doctype = "XHTML1_STRICT"doctype() 这个view helper 现在就可以输出正确的doctype了,然后 Zend_Form 等组件生成和它相兼容的HTML 代码。Zend Framework 教程 添加样式文件上一节介绍了zend framework 的layout 布局文件,现在我们为本教程中的实例添加一些CSS 样式,让应用看起来更像样一些。因为应用中 U

51、RL 并没有明确指向正确的根目录,那我们应该如何指定CSS文件的路径呢(其他静态文件也一样)?zf提供了一个叫baseUrl() 的view helper。这个helper 从请求的对象中收集必要的信息,然后提供给我们不清楚的 URL 的位置。在布局文件 application/layouts/scripts/layout.phtml 的<header> 部分添加CSS文件。我们使用headLink()这个view helper:zf-tutorial/application/layouts/scripts/layout.phtml.<head><?ph

52、p echo $this->headMeta(); ?><?php echo $this->headTitle(); ?><?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/site.css'); ?></head>.通过使用headLink() 的 prependStylesheet() 方法,我们可以在<head>部分,site.css 后面添加任何其他指定的CSS 文件。然后我们在public/目录下

53、创建css 目录,里面创建 site.css文件:zf-tutorial/public/css/site.cssbody,html margin: 0 5px;font-family: Verdana,sans-serif;h1 font-size: 1.4em;color: #008000;a color: #008000;/* Table */th text-align: left;td, th padding-right: 5px;/* style form */form dt width: 100px;display: block;float: left;clear: left;for

54、m dd margin-left: 0;float: left;form #submitbutton margin-left: 100px;因为我们已经创建并设置了布局文件,现在就可以清空 application/views/scripts/index目录中zf 自动创建的4个view 文件中的默认代码了(index.phtml, add.phtml, edit.phtml 和 delete.phtml),开始编写自己的view 视图代码。Zend Framework 教程 显示专辑列表前面我们已经设定了各项Zend 框架配置,MySQL数据库信息,models 结构和 view 架构,可以开

55、始尝试显示一些专辑列表了。我们知道MVC模型中业务逻辑是在controller控制器中实现的。所以我们在IndexController 类中完成这个任务,使用zf 在IndexController 类中自动创建的 indexAction() 来列出专辑目录:zf-tutorial/application/controllers/IndexController.php.function indexAction()$albums = new Application_Model_DbTable_Albums();$this->view->albums = $albums->fetc

56、hAll();.我们实例化一个基于 table data gateway 的model实例。fetchAll() 函数返回一个Zend_Db_Table_Rowset,它可以让我们在action的view脚本文件中迭代输出返回的各行。现在我们在相应的view 脚本index.phtml文件中填入以下代码:zf-tutorial/application/views/scripts/index/index.phtml<?php$this->title = "My Albums"$this->headTitle($this->title);?><

57、;p><a href="<?php echo $this->url(array('controller'=>'index','action'=>'add');?>">Add new album</a></p><table><tr><th>Title</th><th>Artist</th><th>&nbsp;</th></tr>

58、<?php foreach($this->albums as $album) : ?><tr><td><?php echo $this->escape($album->title);?></td><td><?php echo $this->escape($album->artist);?></td><td><a href="<?php echo $this->url(array('controller'=>&

59、#39;index','action'=>'edit', 'id'=>$album->id);?>">Edit</a><a href="<?php echo $this->url(array('controller'=>'index','action'=>'delete', 'id'=>$album->id);?>">Delete<

60、;/a></td></tr><?php endforeach; ?></table>上面的view脚本首先设定页面标题(在layout 的内容中使用),并使用 headTitle()  这个view helper 设置<head>部分的title属性(显示在浏览器页面的标题栏),然后创建一个添加新专辑的链接。Zend framework 提供了url() 这个 view helper,帮助创建包括正确的base URL 的链接。我们只需简单地传递一个参数数组,zf会完成剩下的工作。然后我们创建一个html 表

61、格,用以显示每张专辑的title 标题,artist 艺术家,并显示编辑和删除记录的链接。上面使用了一个标准的foreach循环: 迭代输出专辑列表,url()再次用于创建编辑和删除专辑的链接。现在打开bbb:/zftest.local/ ,可以看到页面生成了一个专辑列表:Zend Framework 教程 添加新专辑添加新专辑的功能有两部分工作要做:· 为用户显示一个填写资料的表单;· 处理表单提交和保存到数据库。我们使用Zend_Form 来完成这任务,Zend_Form 组件允许我们创建表单和验证表单输入。我们先创建一个扩展Zend_Form 的新类Form_Album 来定义新的表单。因为这是一个应用资源,Form_Album 保存在application/forms 目录的Album.php 文件。使用zf 命令行工具创建相关文件:zf create form Album。创建的Album.php 文件默认包含了 init() 方法,创建表单和添加元素。编辑application/forms/Album.php文件,移除init() 方法中的注释,并添加以下代码:zf-tutorial/application/forms/Album.php&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论