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 相关文章推荐
一个数据采集类
Feb 14 PHP
php中$this-&amp;gt;含义分析
Nov 29 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
Laravel下生成验证码的类
Nov 15 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
微信小程序实现自动定位功能
2018/10/31 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
团员的自我评价
2013/12/01 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
材料员岗位职责范本
2015/04/11 职场文书
公司仓库管理制度
2015/08/04 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript