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速度全攻略
Oct 09 PHP
PHP脚本的10个技巧(2)
Oct 09 PHP
php URL跳转代码 减少外链
Jun 25 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
php ajax实现文件上传进度条
Mar 29 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python实现简单登陆系统
2018/10/18 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
英国现代市场:ARKET
2019/04/10 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
服务行业个人求职的自我评价
2013/12/12 职场文书
五五普法心得体会
2014/09/04 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
退税申请报告怎么写
2015/05/18 职场文书
父亲去世追悼词
2015/06/23 职场文书
担保书范文
2019/07/09 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android