本文章参考《php顶级框架zendframe开发实战》第四章内容,并完整实现...
首先将用到的css文件下载下来:http://download.csdn.net/download/unityoxb/4058802
解压后把default和common两个文件复制到public/skins目录下;
/layout/scripts/layout.phtml
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="skins/default/css/layout.css" rel="stylesheet" type="text/css" />
<link href="skins/default/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrap">
<?php
echo $this->partial('header.phtml');
?>
<div id="main">
<div id="sidebar"></div>
<div id="content">
<?php echo $this->layout()->content ?>
</div>
</div>
<?php echo $this->partial('footer.phtml') ?>
</div>
</body>
<!-- <?php echo $this->layout()->content ?> -\-> -->
</html>
1、用到的数据库文件mysql.sql
create table if not exists `core_pages`(
`id` int(10) unsigned not null auto_increment comment '页面唯一ID',
`cid` int(10) unsigned not null default '0' comment '分类ID',
`uid` int(10) unsigned not null default '0' comment '用户ID',
`title` varchar(255) not null comment '页面标题',
`body` text not null comment '内容',
`status` tinyint(4) not null default '1' comment '是否发布',
`createtime` int(11) not null default '0' comment '创建页面时间',
`updatetime` int(11) not null default '0' comment '修改页面时间',
`comment` tinyint(4) not null default '0' comment '页面是否评论功能',
`start` tinyint(4) not null default '0' comment '页面级别',
`top` tinyint(4) not null default '0' comment '置顶',
primary key (`id`)
)ENGINE=InnoDB default charset=utf8;
打开mysql,使用source mysql.sql即可创建表结构
2、配置application.ini文件(hahacom/applicaton/configs)
主要配置zend Framework连接mysql
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = "root"
resources.db.params.dbname = "test" --这是数据名称
resources.db.isDefaultTableAdapter = "TRUE"
resources.db.params.driver_options.1002 = "SET NAMES UTF8;"
3、public/index.php
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : '<strong>development</strong>')); //修改成测试环境
4、创建文章展示model(model主要存储数据模型类似javabean,或者从数据库获取数据并保存在内存里)
执行命令:zf create model page
会自动生成一个models/Page.php文件
<?php
class Application_Model_Page
{
protected $_name = 'core_pages';
public $result;
public function getPage($where = array())
{
$db = Zend_Db_Table::getDefaultAdapter();
// $db = $this->getAdapter();
$select = $db->select();
/*if($where != null)
{
//$select->where(' star = ? ', $where);
//$sql = $db->quoteInto("select * from `core_pages` where `star`= ?", $where);
//$result = $db->query($sql);
$select->from('core_pages','*')->where('star = ?', $where)->limit(1);
}*/
$select->from('core_pages','*');
if(count($where)>0)
{
foreach($where as $key=>$value)
$select->where($key.' = ?',$value);
}
//$row = $result->fetch();
$row = $db->fetchAll($select);
if($row)
{
return $row;
}
else
{
echo "=================";
return null;
}
}
public function getPages($where = null)
{
$db = Zend_Db_Table::getDefaultAdapter();
if(is_numeric($where))
{
//$row = $db->find($where)->current();
$select = $db->select();
$select->from('core_pages','*');
$select->where('id = ?', $where);
$row = $db->fetchRow($select);
}
if(is_array($where) && count($where)>0)
{
$select = $db->select();
$select->from('core_pages','*');
foreach($where as $key=>$value){
$select->where($key.'=?', $value);
}
$row = $db->fetchAll($select);
}
if($row)
{
return $row;
}
else
{
echo "=================";
return null;
}
}
}
?>
5、创建controller
执行命令: zf create controller news 会自动生成controllers/NewsController.php
<?php
class NewsController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
$modelPage = new Application_Model_Page();
//$star = 1;
$where = array('top'=>1, 'comment'=>1);
$newsStar = $modelPage->getPage($where);
//print_r($newsStar);
$this->view->News = $newsStar;
//$this->view->name = "hahaha";
}
}
执行命令: zf create controller page 和 zf create action detail page
会自动生成 controllers/PageController.php
<?php
class PageController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
public function detailAction()
{
// action body
$id = $this->_request->getParam('id');
$modelPage = new Application_Model_Page($id);
//if($modelPage == null)
//print_r('==============================');
//print_r($id);
//print_r($modelPage);
$page = $modelPage->getPages($id);
$this->view->page = $page;
}
}
5、接下来创建视图文件
/views/scripts/news/index.phtml
<?php
echo "<h3>".$this->News[0]['title']."</h3>";
echo $this->News[0]['body'];
//echo $this->name;
if($this->News)
{
/*echo "<ul>";
// print_r($this->News);
foreach($this->News as $val)
{
echo "<li>"."<u>".$val['title']."</u>"."</li>";
}
echo "</ul>";
*/
echo "<ul class = 'listNews'>";
echo $this->partialLoop('row_pages.phtml', $this->News);
echo "</ul>";
}
?>
/views/scripts/row_pages.phtml
<li>
<a href = "/page/detail/id/<?php echo $this->id; ?>"><?php echo $this->title; ?></a>
发表时间: <?php echo date('Y-m-d', $this->createtime); ?>
</li>
/views/scripts/page/detail.phtml
<?php
echo "<h2>".$this->page['title']."</h2>";
echo "发表:".date('Y-m-d', $this->page['createtime'])."";
echo "<hr/>";
echo $this->page['body'];
?>
运行截图:
点击链接: