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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
php判断数组是否为空的实例方法
May 10 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP定时任务延缓执行的实现
2014/10/08 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
python解析xml模块封装代码
2014/02/07 Python
Python切片用法实例教程
2014/09/08 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
前台文员我鉴定
2014/01/12 职场文书
总经理人事任命书
2014/06/05 职场文书
远程培训的心得体会
2014/09/01 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
政风行风评议心得体会
2014/10/21 职场文书
经济纠纷起诉状
2015/05/20 职场文书
农村老人去世追悼词
2015/06/23 职场文书
初一军训感言
2015/08/01 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB