当前位置:首页 > PHP教程 > php应用 > 列表

yii2实现 "上一篇,下一篇" 功能的代码实例

发布:smiling 来源: PHP粉丝网  添加日期:2018-07-26 17:48:02 浏览: 评论:0 

最近做了简答的文章详情页面,需要在页面底部加入上一篇,下一篇 按钮,分析了下,最基本需要有文章的标题和id(作为参数).

开始想的是当前的id加减1,但考虑到如果部分id丢失就不对了,于是分别查询比当前id大和小的记录并且限定为一条,于是有了以下代码。

代码如下,不对的地方请指教.控制器中代码如下:

  1. //查询上-篇文章 
  2.     $prev_article= 你的模型::find() 
  3.       ->andFilterWhere(['<','id',$id]) 
  4.       ->andFilterWhere([其他条件) 
  5.       ->orderBy(['id'=> SORT_DESC]) 
  6.       ->limit(1) 
  7.       ->one(); 
  8.     //查询下-篇文章 
  9.     $next_article= 你的模型::find() 
  10.       ->andFilterWhere(['>','id',$id]) 
  11.       ->andFilterWhere(其他条件) 
  12.       ->orderBy(['id'=> SORT_ASC]) 
  13.       ->limit(1) 
  14.       ->one(); 
  15.   
  16.   
  17.     $model['prev_article'] = [ 
  18.       'url'=> !is_null($prev_article) ? Url::current(['id'=>$prev_article->id]) :'javascript:;'
  19.       'title'=> !is_null($prev_article) ?$prev_article->title :'没有了'
  20.     ]; 
  21.   
  22.     $model['next_article'] = [ 
  23.       'url'=> !is_null($next_article) ? Url::current(['id'=>$next_article->id]) :'javascript:;'
  24.       'title'=> !is_null($next_article) ?$next_article->title :'没有了'
  25.     ]; //phpfensi.com 
  26.   
  27.     return$this->render('view'
  28.       'model'=>$model
  29.     ); 

视图中代码如下:

  1. <divclass="left"
  2.     <p>上一篇: 
  3.       <a href="<?=$model['prev_article']['url']?>"
  4.         <?=$model['prev_article']['title']?> 
  5.       </a> 
  6.     </p> 
  7.   </div> 
  8.   <divclass="right"
  9.     <p>下一篇: 
  10.       <a href="<?=$model['next_article']['url']?>"
  11.         <?=$model['next_article']['title']?> 
  12.       </a> 
  13.     </p> 
  14.   </div> 

Tags: 上一 实例 代码

分享到: