首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

修改的留言本,加入smarty

今天对zf留言本进行了修改。使用smarty模板进行显示。其中library中的zend框架没有包含,太大了。
编程中需要注意几个地方:
1.zend framework默认是使用phtml模板进行显示的。比如indexAction对应的模板是views/scrīpts/index/index.phtml.使用别的模板前需要修改默认的viewrender.使用方法:$front->setParam('noViewRenderer', true); $front是一个Zend_Controller_Action实例。
2.定义Zend_View_Smarty类。这个类只是简单的实现Zend_View_Interface.代码可以直接从zend framework手册7.3中复制。只需在_construct中加上一行代码指定模板编译路径(compile_dir)。比如代码可以为$this->_smarty->compile_dir="./templates/templates_c";这个类定义我放在./library/Class目录下。在index.php中可以这么使用:$smarty = new Zend_View_Smarty();
$smarty->setscrīptPath("./templates/templates");
Zend_Registry::set('smarty',$smarty);
3.修改IndexController源码。主要还是在indexAction中改动。其实很简单。首先取出注册表中的视图View,然后从数据库中取出数据, 简单的assign方法就可以把数据对象messages传给模板。接着就用render方法呈现模板。看看源码就知道了。$view = Zend_Registry::get('smarty');
  $db   = Zend_Db_Table::getDefaultAdapter();
  $sql    = "SELECT * FROM `message` ORDER BY `id` DESC";
  $result = $db->query($sql);
  $Messages=$result->fetchAll();
  $view->assign("messages",$Messages);
  echo $view->render("index.tpl");
4.addAction只需加上几行代码:用于显示留言的窗体。这些内容不使用smarty时会由zend framework自动调用显示。使用smarty后就该显示的调用模板。if(){...} else
  {
   $view = Zend_Registry::get('smarty');
   echo $view->render("add.tpl");
  }
5.index.tpl怎么显示数据:使用section循环。可以查看smarty手册模仿使用。
<table class='entry' width="100%">
   
     {section name=message loop=$messages}
     <tr class='title'>
      <td>{$messages[message].username}</td>
      <td class='time'>{$messages[message].time}</td>
      <td class= 'time'>{$messages[message].ip}</td>
     </tr>
     <tr class='content'>
      <td>{$messages[message].content}</td>
     </tr>
     {/section}
    </table>

源码中addAction 漏了一行代码了。就是对获取客户ip函数的引用的。
不过自己可以方便的添加:require_once('./application/function.inc.php');

[ 本帖最后由 kinglion04 于 2007-8-24 10:03 编辑 ]
附件: 您所在的用户组无法下载或查看附件
昵称: kinglion04  时间: 2007-08-23 13:37:00
数据库部分请看phper第一期
zend framework使用的是1.01
smarty也是最新的
昵称: kinglion04  时间: 2007-08-23 14:07:00
把数据库导出一个sql文件吧.....这样方便些
昵称: xing  时间: 2007-08-23 16:47:00
-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2007 年 08 月 23 日 08:57
-- 服务器版本: 5.0.41
-- PHP 版本: 5.2.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- 数据库: `gb`
--

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

--
-- 表的结构 `message`
--

CREATE TABLE `message` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` char(100) NOT NULL,
  `content` text NOT NULL,
  `time` int(10) unsigned NOT NULL,
  `ip` char(15) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
昵称: kinglion04  时间: 2007-08-23 17:00:00