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 七大优势分析
Jun 23 PHP
php数据库抽象层 PDO
May 07 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
Yii使用技巧大汇总
Dec 29 PHP
php中使用websocket详解
Sep 23 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 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
var与Javascript变量隐式声明
2009/09/17 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
React如何避免重渲染
2018/04/10 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
python根据路径导入模块的方法
2014/09/30 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
EJB的几种类型
2012/08/15 面试题
翻译专业应届生求职信
2013/11/23 职场文书
服务中心夜班服务员岗位职责
2013/11/27 职场文书
家长会演讲稿
2014/04/26 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
高中化学教学反思
2016/02/22 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
详解Python requests模块
2021/06/21 Python
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript