文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>zend framework 1.8.1 start

zend framework 1.8.1 start

时间:2009-05-26  来源:bing_fox

背景:     前些天刚弄了下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. 测试
地址:http://localhost/zf-tutorial/public, 你将看到一个蓝色界面,表示成功
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="http://www.w3.org/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->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="<?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>
<?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'=>'index',
'action'=>'edit', 'id'=>$album->id));?>">Edit</a>
<a href="<?php echo $this->url(array('controller'=>'index',
'action'=>'delete', 'id'=>$album->id));?>">Delete</a>
</td>
</tr>
<?php endforeach; ?>
</table>

13. 目前我的截图

500)this.width=500;" border=0>
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载