背景:
前些天刚弄了下1.7版本的ZF,结果新版本又出来了,变化其实挺大的,特别是在安装过程中.于是更新一下.
正文:
1.8 Zend安装
与之前版本相比,新版将安装过程部分脚本化,主要是创建骨架过程。并且增加了一些配置文件使框架更加的可配置。
1. 下载
下载,并解压,将bin, library拷贝到想要的位置,一般是c:\Programe File\dirName下
2. 将bin的路径加到系统环境变量PATH中,执行zf show version测试,如果php.exe不能被发现,则查找其路径同样也加到PATH中即可
3. 到web server的root目录下,执行
zf create project zf-tutorial
创建zf-tutorial骨架,当然目录名任意
4. 拷贝library/Zend到zf-tutorial/library下
5. 设置apache
AllowOverride None -> AllowOverride All
6. 测试
地址: 你将看到一个蓝色界面,表示成功
7.一些文件简介
public/.htaccess
public/index.php
application/configs/application.ini
8.添加一个action
切换目录到zf-tutorial/
zf create action add index
9. 数据库
9.1 configuration
file: application/configs/application.ini
like this in [production]:
resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.params.username = root resources.db.params.password = mysql resources.db.params.dbname = zf-tutorial
|
9.2 如果用PDO_MYSQL要在php.ini中打开相应扩展
extension=php_pdo.dll
extension=php_pdo_mysql.dll //这一点很重要,我就在这点上吃了苦头
9.3 准备数据库
表albums:
CREATE TABLE albums ( id int(11) NOT NULL auto_increment, artist varchar(100) NOT NULL, title varchar(100) NOT NULL, PRIMARY KEY (id) );
|
插入数据:
INSERT INTO albums (artist, title) VALUES ('Bob Dylan', 'Together Through Life'), ('Various Artists', 'Now That\'s what I Call 72'), ('Lady Gaga', 'The Fame'), ('Lily Allen', 'It\'s Not Me, It\'s You'), ('Kings of Leon', 'Only By The Night
|
9.4 Model class
zf-tutorial/application/models/DbTable/Albums.php
class Model_DbTable_Albums extends Zend_Db_Table { protected $_name = 'albums'; public function getAlbum($id) { $id = (int)$id; $row = $this->fetchRow('id = ' . $id); if (!$row) { throw new Exception("Count not find row $id"); } return $row->toArray(); } public function addAlbum($artist, $title) { $data = array( 'artist' => $artist, 'title' => $title, ); $this->insert($data); } function updateAlbum($id, $artist, $title) { $data = array( 'artist' => $artist, 'title' => $title, ); $this->update($data, 'id = '. (int)$id); } function deleteAlbum($id) { $this->delete('id =' . (int)$id); } }
|
//In fact, now it is ok. You can call model class in controllers.
10. Layouts and views
10.1 views
views is the bridge between controllers and *.phtml
$view = new Zend_View(); //create a view instance
$vies相当于html页面在controller中的接口,controller通过设置view的一些属性来决定html的模样,如$this->view->title, $this->view->headTitle
10.2 layout
10.2.1 layout是.phtml的模板
file: application/configs/application.ini
resources.layout.layoutpath = APPLICATION_PATH "/layouts"
//配置layouts的路径
10.2.2
zf-tutorial/application/layouts/layout.phtml
<?php echo $this->doctype('XHTML1_TRANSITIONAL'); ?> <html xmlns="" xml:lang="en" lang="en"> <head> <?php echo $this->headMeta(); ?> <?php echo $this->headTitle(); ?> </head> <body> <div id="content"> <h1><?php echo $this->escape($this->title); ?></h1> <?php echo $this->layout()->content; //模板以外的内容?> </div> </body> </html>
|
10.3 初始化view and layout
application/Bootstrap.php
... function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Zend Framework Tutorial'); } ...
|
11. style, css
11.1 保证路径正确
zf-tutorial/application/views/helpers/BaseUrl.php
<?php class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); return $fc->getBaseUrl(); } }
|
//获取basedir
11.2 添加入模板
zf-tutorial/application/layouts/layout.phtml
... <head> <?php echo $this->HeadMeta(); ?> <?php echo $this->headTitle(); ?> <?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/site.css'); ?> </head> ...
|
11.3 编辑css
zf-tutorial/public/css/site.css
body,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; } form dd { margin-left: 0; float: left; } form #submitbutton { margin-left: 100px; }
|
//it's all right
12. All is useful
12.1 controller call
zf-tutorial/application/controllers/IndexController.php
... function indexAction() { $this->view->title = "My Albums"; $this->view->headTitle($this->view->title, 'PREPEND'); $albums = new Model_DbTable_Albums(); //实例化 $this->view->albums = $albums->fetchAll(); //获取数据,fetchAll是zf的内置函数 } ...
|
12.2 show
zf-tutorial/application/views/scripts/index/index.phtml
<p><a href="url(array('controller'=>'index', 'action'=>'add'));?>">Add new album</a></p> <table> <tr> <th>Title</th> <th>Artist</th> <th> </th> </tr> <?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="url(array('controller'=>'index', 'action'=>'edit', 'id'=>$album->id));?>">Edit</a> <a href="url(array('controller'=>'index', 'action'=>'delete', 'id'=>$album->id));?>">Delete</a> </td> </tr> <?php endforeach; ?> </table>
|
13. 目前我的截图
阅读(1546) | 评论(0) | 转发(0) |