下载最新的ZendFrameWork1.11.10最小版本,下载地址可以从官方下载,或者从下面的地址:
http://blog.chinaunix.net/space.php?uid=78707&do=blog&id=2169031
http://download.csdn.net/source/3512716
环境Apache:2.2.x;Php:5.2.x
Apache开启mod_rewrite功能
必须保证Apache已配置成支持.htaccess文件的模式。通常这可以通过在httpd.conf中将
AllowOverride None
改成
AllowOverride All
目录结构
虽然Zend Framework对目录结构没有特别要求,但其手册上还是推荐了一种常用的目录结构,本教程也使用这种目录结构。这种结构要求你能完全控制Apache的配置文件,以便可以将大多数的文件存放在web的根目录之外。
首先在web服务器的根目录下创建一个ZendApp目录,然后分别创建下面的子目录来存放网站的文件:
引导文件
Zend Framework控制器类 Zend_Controller支持网站使用“干净的URL”5。为此所有的请求都需要通过index.php进入。这就是通常所说的前端控制器(Front Controller)设计模式。它为我们的应用程序的所有页面提供了一个中心控制点并确保程序的运行环境已经正确设置。要完成这一切,都必须在ZendApp目录下创建一个.htaccess文件:
- # Zend Framework rewrite规则
- RewriteEngine on
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule .* index.php
- # 安全性考虑:不允许列表目录内容
- Options -Indexes
引导文件: index.php
- ?php
- error_reporting(E_ALL|E_STRICT);
- ini_set('display_errors', 1);
- date_default_timezone_set('Europe/London');
- // 目录设置和类装载
- set_include_path('.' . PATH_SEPARATOR . './library/'
- . PATH_SEPARATOR . './application/models'
- . PATH_SEPARATOR . get_include_path());
- // include "Zend/Loader.php";
- // Zend_Loader::registerAutoload();
- require_once 'Zend/Loader/Autoloader.php';
- Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
- // 设置控制器
- $frontController = Zend_Controller_Front::getInstance();
- // 如果设置虚拟主机,则下面两行不用设置;如果没有设置虚拟主机,则需要采用下面的两行中的一种方式
- $frontController->setParam('useDefaultControllerAlways', true);
- //$frontController->setBaseUrl('/ZendApp');
- $frontController->throwExceptions(true);
- $frontController->setControllerDirectory('./application/controllers');
- Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
- // run!
- $frontController->dispatch();
需要的页面:
index,add,edit,delete
编写控制器
ZendApp/application/controllers/IndexController.php
- ?php
- class IndexController extends Zend_Controller_Action
- {
- function indexAction()
- {
- $this->view->title="My Albums";
- }
- function addAction()
- {
- $this->view->title="Add New Albums";
- }
- function editAction()
- {
- $this->view->title="Edit Albums";
- }
- function deleteAction()
- {
- $this->view->title="Delete Albums";
- }
- }
编写视图
下面的内容,分别存四个文件:
ZendApp\application\views\scripts\index\add.phtml
ZendApp\application\views\scripts\index\index.phtml
ZendApp\application\views\scripts\index\edit.phtml
ZendApp\application\views\scripts\index\delete.phtml- html>
- head>
- title>?php echo $this->escape($this->title);?>/title>
- /head>
- body>
- h1>?php echo $this->escape($this->title);?>/h1>
- /body>
- /html>
ZendApp\application\layouts\layout.phtml内容如下:
- !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- head>
- meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
- title>?php echo $this->escape($this->title); ?>/title>
- /head>
- body>
- div id="content">
- h1>?php echo $this->escape($this->title);?>/h1>
- ?php echo $this->layout()->content; ?>
- div>
- /body>
- /html>
通过上面的搭建,基本上就能看出Zend Framework的MVC的简单应用了。
注意:
1 Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (zendapp)' in修改办法:
1、 修改httpd.conf,建立虚拟主机。(官方建议)
ServerName 127.0.0.1
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/ZendApp/public"
SetEnv APPLICATION_ENV "development"
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
2、 在index.php中加入:
$frontController->setParam('useDefaultControllerAlways', true);
3、 还有人说加入:
$frontController->setBaseUrl('homepath’')//homepath替换你自己的public所在的路径
1 Notice: Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead in发生上述提示,修改下面两行为
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
到:
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);