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


Posted in PHP onFebruary 04, 2017

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

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

代码如下,不对的地方请指教.

控制器中

//查询上-篇文章
    $prev_article = 你的模型::find()
      ->andFilterWhere(['<', 'id', $id])
      ->andFilterWhere([其他条件)
      ->orderBy(['id' => SORT_DESC])
      ->limit(1)
      ->one();
    //查询下-篇文章
    $next_article = 你的模型::find()
      ->andFilterWhere(['>', 'id', $id])
      ->andFilterWhere(其他条件)
      ->orderBy(['id' => SORT_ASC])
      ->limit(1)
      ->one();


    $model['prev_article'] = [
      'url' => !is_null($prev_article) ? Url::current(['id'=>$prev_article->id]) : 'javascript:;',
      'title' => !is_null($prev_article) ? $prev_article->title : '没有了',
    ];

    $model['next_article'] = [
      'url' => !is_null($next_article) ? Url::current(['id'=>$next_article->id]) : 'javascript:;',
      'title' => !is_null($next_article) ? $next_article->title : '没有了',
    ];

    return $this->render('view', 
      'model' => $model, 
    );

视图中

<div class="left">
    <p>上一篇:
      <a href="<?=$model['prev_article']['url']?>">
        <?=$model['prev_article']['title']?>
      </a>
    </p>
  </div>
  <div class="right">
    <p>下一篇:
      <a href="<?=$model['next_article']['url']?>">
        <?=$model['next_article']['title']?>
      </a>
    </p>
  </div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
聊天室php&amp;mysql(二)
Oct 09 PHP
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
PHP图像处理类库及演示分享
May 17 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 #PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 #PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 #PHP
Yii2实现多域名跨域同步登录退出
Feb 04 #PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 #PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 #PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 #PHP
You might like
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
python实现得到一个给定类的虚函数
2014/09/28 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
python3安装crypto出错及解决方法
2019/07/30 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
给国外客户的邀请函
2014/01/30 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
委托培训协议书
2014/11/17 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js