本文实例讲述了Zend Framework实现具有基本功能的留言本。分享给大家供大家参考,具体如下:
一个留言本...具有的基本功能就是.1.发表留言. 2.回复留言.3.管理留言(修改,删除等操作).
我这里只是写了基本的操作,比如加留言验证码.页面的美化什么的我都
没有做.我只是给大家一个思想..很多东西要靠我们自己去学了.
另一个就是我的留言用了AJAX.就是你一发表.数据就会在页面显示..不过大家要了解Jquery的AJAX的用法..我相信大部分人都会这个JS类库吧.
要是不懂也没关系..你们可以改成不是AJAX的..只要把发表留言的FROM的提交动作转换成我们控制里的一个动作..相信这个不是问题.好了..开始工作:
我们的目录结构和以前一样,大致不变..下面要有改动的..大家也不要急..我会教大家如何做:
第一:先建立好我们的模板页面(View)..
按照上篇教程的目录.application/views/scripts目录下有一些模板页.如(index.phtml,edit.phtml).我们删除它们..现在加一个message文件夹.
在message里加上(edit.phtml,index.phtml,message.phtml)三个模板文件.完成后.我们在application/views/scripts/目录下加上(header.phtml,footer.phtml)二个模板文件.
因为这二个文件以后会重用来..所以把他们直接放到application/views/scripts/下..好了模板建立好了.现在就是加入一个HTML.JS.IMAGE了.我把他们这些都放在网站根目录public文件夹下.大家可以对应我的源码来看一下..要是有点乱..请大家根据源码来看这教程..(^_^不好意思,我只能这样表达.我也不知道如何写才能让你们更了解.请大家体谅啊!)
第二:接下来,我们写我们的数据层程序(Model).
1.我们在原来的表中加上下面几个字段:pid(标志是否是回复,0为留言.为为0的是为回复) ,author(留言者),headimg(留言者头像),email(留言者电子邮件), ip(留言者IP地址),
show(留言是否显示.这个要在生台管理能用.这教程这里没有用到.), addtime(留言时间), updatetime(留言修改时间).字段类型的设置请大家看源码SQL文件.
2.我们在application/models/目录下有一个Message.php.我们先写好我们留言本的Model .主要是对留言本数据层的操作.我增加了下面几个方法:
getAllMessage(取到所有的留言) , getAllReMessage(取到所有的回复留言数据) , getMessageByID(根据ID取留言数据), updateMessageByID(修改留言), delMessageByID(删除留言)
具体程序如下(程序上面也有注解):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class Message extends Zend_Db_Table
{
protected $_name = "message" ;
protected $_primary = 'id' ;
/* * 取到所有的留言 */
public function getAllMessage(){
$messageArray = $this ->fetchAll( "message.pid=0" ,
"message.id DESC" )->toArray();
return $messageArray ;
}
/* * 取到所有的回复留言数据 */
public function getAllReMessage(){
$ReArray = $this ->fetchAll( "message.pid!=0" ,
"message.id DESC" )->toArray();
return $ReArray ;
}
/* * 根据ID取留言数据 */
public function getMessageByID( $id ){
$messageone = $this ->fetchAll( 'id=' . $id )->toArray();
return $messageone ;
}
/* * 修改留言 */
public function updateMessageByID( $array , $id ){
$db = $this ->getAdapter();
$where = $db ->quoteInto( 'id = ?' , $id );
$this ->update( $array , $where );
}
/* * 删除留言 */
public function delMessageByID( $id ){
$where = 'id = ' . $id ;
$this -> delete ( $where );
return true;
}
}
|
第三:完成上面二项.最后就我们的控制层了(Controller).打开application/controllers/IndexController.php这个控制器..把原来的不要的东西给删除了.我在上面加上了下面
一个message方法(也叫动作Action).不过其它的Action都有改动..请大家参与源码来进行分析.这里我只贴也我新加入的messageAction这个方法(代码上都有注解.请自行查看.谢谢):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
public function messageAction()
{
if ( $this ->_request->isPost()){
Zend_Loader::loadClass( 'Zend_Filter_StripTags' );
$filter = new Zend_Filter_StripTags();
$username = $filter ->filter( $this ->_request->getPost( 'username' ));
$email = $filter ->filter( $this ->_request->getPost( 'email' ));
$content = $filter ->filter( $this ->_request->getPost( 'content' ));
$title = $filter ->filter( $this ->_request->getPost( 'title' ));
$messageid = $filter ->filter( $this ->_request->getPost( 'messageid' ));
$headimg = $filter ->filter( $this ->_request->getPost( 'headimg' ));
$message = new Message();
$db = $message ->getAdapter();
if ( $username != '' && $email != '' && $messageid != '' && $content != '' ){
require_once 'Zend/Validate/EmailAddress.php' ;
$validator = new Zend_Validate_EmailAddress();
if ( $validator ->isValid( $email )) {
//取IP地址..这里只是简单取IP
$IP = $_SERVER [ "REMOTE_ADDR" ];
$data = array (
'title' => $title ,
'author' => $username ,
'pid' => $messageid ,
'headimg' => $headimg ,
'email' => $email ,
'show' => '1' ,
'content' => $content ,
'ip' => $IP ,
'addtime' =>time(),
'updatetime' =>time()
);
$message ->insert( $data );
$db ->lastInsertId();
unset( $data );
//取到所有留言getAllMessage,getAllReMessage
//二个方法在Model(Message.php)里定义的
$this ->view->messages= $message ->getAllMessage();
//取到所有回复数据
$this ->view->arrReviews= $message ->getAllReMessage();
$this ->view->flag= '0' ;
$this ->view->message= '您的留言发表成功!' ;
echo $this ->view->render( 'message/message.phtml' );
} else {
$this ->view->flag= '5' ;
$this ->view->message= '对不起!您填写有电子邮箱地址有误!' ;
echo $this ->view->render( 'message/message.phtml' );
}
} elseif ( $username == '' ){
$this ->view->flag= '1' ;
$this ->view->message= '对不起!您的大名不能为空!' ;
echo $this ->view->render( 'message/message.phtml' );
} elseif ( $messageid == '' ){
$this ->view->flag= '2' ;
$this ->view->message= '对不起!回复留言编号不能为空!' ;
echo $this ->view->render( 'message/message.phtml' );
} elseif ( $content == '' ){
$this ->view->flag= '3' ;
$this ->view->message= '对不起!您填写的留言内容不能为空!' ;
echo $this ->view->render( 'message/message.phtml' );
}
} else {
echo $this ->view->render( 'message/index.phtml' );
}
}
|
只是没有验证码以及分页功能..后面一篇会有教程进一步讲解.
总结:到这里就完成了一个留言本的编写.当然很简单的功能..还是那句话.我只是把我会的写给大家..只是一个思想..我也只会这些..所以写的好与不好..请大家自己进行权衡
完整实例代码点击此处本站下载。
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。