宝哥软件园

TP5.0框架下实现无限极回复功能的方法分析

编辑:宝哥软件园 来源:互联网 时间:2021-08-24

本文通过一个实例描述了在TP5.0框架下实现无限极点回复功能的方法。分享给大家参考,如下:

最近做项目的时候用了评论回复,用ThinkPHP5.0框架回复的时候遇到了一些问题。让我们做一个简短的总结。(李长辉)

1.首先是数据表的设计:

创建tablezy _ hui fu(code int auto _ increment主键,# reply code puser varchar(50),# reply personnel listcode int,# article code time varchar(50),# reply time content text,# reply content pcode int,# parent code 0 article leval int,# level 0 top level 1 other isok int #已读未读0未读1已读);评论和回复放在表格中。为了在显示时区分它们,作为顶级回复级别的注释被编码为0,而其他子回复级别被编码为1。

每个回复都有一个父代码来表示回复哪个评论。如果是直接注释,则父代码设置为0。

2.下一步是在页面上显示评论和回复:

在控制器中,我们需要查询文章下的所有评论和回复,并在TP框架中注册它们。这里,我们调用一个方法CommentList()来获取文章下的评论和回复:

//查询注释$ ahuifu=$ this-comment list($ code,0);$this-assign('ahuifu ',$ ahui fu);CommentList()方法如下,所有的注释回复都是以递归方式按一定顺序查询,并存储在数组中:

//读取注释列表的递归,代码为文章代码,pcode为父代码公共函数注释列表($ code,$ pcode){ $ comment list=array();//store comment array $ list=db : table(' zy _ hui fu ')-alias(' a ')-where(' listcode ',$ code)-where ('pcode ',$ pcode)-join ('zy _ userb ',' a . foreach($ list as $ v){ $ comment list[]=$ v;//查询回复$ zi=$ this-commentlist ($ code,$ v[' code ']);if(count($ zi)){ foreach($ zi as $ v1){ $ comment list[]=$ v1;} } }返回$ commentlist}在视图页面上显示数据:

{ volist name=' ahuifu ' id=' VP ' } { if condition='($ VP . leval==0)' } div class=' panel panel-default pl _ list ' div class=' panel-body pl _ list _ NR ' div class=' show _ NR _ pl _ tou ' img src=' http : { $ VP . img } ' width=' 30 ' height=' 30 '/span { $ VP . name }/span span { $ VP . time | date=' Y # # }/span button class=' btnbtn-primary BTN-xs show _ hui fu _ BTN ' pcode=' { $ VP . code } ' reply/button/span/div div class=' show _ NR _ pl _ NR ' { $ VP . content }/div/div

添加注释时,注意将父代码pcode添加为0,将leval级别添加为0。

添加回复时,添加父代码作为待回复数据的主键,添加级别leval为1。

具体实现比较简单,不再赘述。

更多对thinkPHP感兴趣的读者可以查看本网站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《PHP模板技术总结》、0103010。

希望本文对基于ThinkPHP框架的PHP编程有所帮助。

更多资讯
游戏推荐
更多+