您的位置:首页 > 编程语言 > PHP开发

zend 学习笔记二

2014-03-04 17:59 295 查看
好吧,连接数据库了。

model 是处理application应用的业务规则核心部分(“business rule”)

即来处理业务逻辑,产品功能需求滴。

用来封装数据库的表(存储级)

使用Zend Framework 的 Zend_Db_Table类来查找/插入/更新或删除数据库中的行。

1,配置数据库

数据库配置文件application/configs/application.ini

resources.db.adapter = PDO_MYSQL

resources.db.params.host = localhost

resources.db.params.username = root

resources.db.params.password = mysqlpassword

resources.db.params.dbname = zendframeworktutorial

关于 Zend_Db_Table 和 Zend_Db_Table_Abstract
http://framework.zend.com/manual/en/learning.quickstart.create-model.html
Zend_Db_Table_Row

Zend_Db_Table_Abstract 是一个抽象类

自动加载器,就是分析名字,分析出资源类跳到什么目录中。如下

前缀 --》 目录

Form --》forms

Model --》models

Model_DbTable --》models/DbTable

Model_Mapper --》models/mappers

Plugin --》plugins

Service --》services

View_Filter --》views/filters

View_Helper --》views/helpers

主文件夹application/ 使用Application_前缀。

因为我们是根据数据库表命名albums,并使用Zend_Db_Table的,我们的类将会以 Application_Model_DbTable_Albums 命名,保存在applications/models/DbTable/Albums.php 文件中。

东西不复杂,怎么讲的那么晕呢,花了十几分钟才看明白。晕死

为了告诉 Zend_Db_Table 要管理哪个表,我们要为表名称设定protected 属性 $_name。同样,Zend_Db_Table 会认为数据库表有一个名为id自动递增的主键,这个field的名称如果有需要也可以更改。使用zf命令行工具:(经验说:还是不改的好。传统要保留,哈)

zf create db-table Albums albums

文件 applications/models/DbTable/Albums.php 将会被创建,在这个文件中有一个名为 Application_Model_DbTable_Albums 的类,并设定了和这个类交互的数据库表的名称。

我们添加 getAlbum(), addAlbum(), updateAlbum() 和 deleteAlbum() 这几个方法如下:到Albums.php 中。

<?php

class Application_Model_DbTable_Albums extends Zend_Db_Table_Abstract {

protected $_name = 'albums';

public function getAlbum($id) {

$id = (int)$id;

$row = $this->fetchRow('id = ' . $id);

if (!$row) {

throw new 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' => $artist,

'title' => $title,

);

$this->update($data, 'id = '. (int)$id);

}

public function deleteAlbum($id) {

$this->delete('id =' . (int)$id);

}

}

上面我们创建了4个用于和数据库表交互的helper 方法。

下面我们要在controllers 中填入models 中的数据,以及编写view 脚本代码显示它。

---------------------------------------------------

Zend Framework 的view 组件是Zend_View。这个view 组件的功能是将action函数中的代码和显示页面的代码分开写。

Zend_View 的基本使用方法是:

$view = new Zend_View();

$view->setScriptPath('/path/to/scripts');

echo $view->render('script.php');

对于渲染过程,首先 ViewRenderer 创建 Zend_View 对象,该对象会在 views/scripts/{controller name} 目录中查找和 action 名字相同,后缀为.phtml 待渲染的的view 脚本。也就是查找渲染的view 脚本为 views/scripts/{controller name}/{action_name}.phtml,要呈现的内容被添加到Response 对象的body中。

(即,把控制器的数据,通过那个目录下的模板,渲染出来。显示到网页上。)

页面上重复的header 部分和footer部分,甚至sidebar边栏等。这是一个很常见的问题,Zend 框架使用 Zend_Layout 解决这个问题。

布局文件默认放在application/layouts/ 目录,不过 Zend_Application 允许我们配置Zend_Layout这个资源。我们使用Zend_Tool 创建布局视图代码,它同时还知道如何正确地更新 application.ini 文件。在zftest 目录中我们执行下面的命令:

zf enable layout

现在Zend_Tool 已经创建了 application/layouts/scripts 文件夹,并在里面创建了一个layout.phtml 文件,同样也更新了application.ini文件,注意到是在[production]部分添加了一行:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

打开layouts.phtml 文件用下面的代码替换:

zf-tutorial/application/layouts/scripts/layout.phtml

<?php

$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');

$this->headTitle()->setSeparator(' - ');

$this->headTitle('Zend Framework Tutorial');

echo $this->doctype(); ?>

<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>

$this变量,它是在bootstrapping过程中创建的view 对象的一个实例。

zf-tutorial/application/layouts/scripts/layout.phtml

...

<head>

<?php echo $this->headMeta(); ?>

<?php echo $this->headTitle(); ?>

<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/site.css'); ?>

</head>

然后我们在public/目录下创建css 目录,里面创建 site.css文件:

因为我们已经创建并设置了布局文件,现在就可以清空 application/views/scripts/index目录中zf 自动创建的4个view 文件中的默认代码了(index.phtml, add.phtml, edit.phtml 和 delete.phtml),开始编写自己的view 视图代码。

---------------------------------

CSS 样式完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: