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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
php 面向对象的一个例子
Apr 12 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
初识PHP
Sep 28 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
php 可变函数使用小结
Jun 12 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
PHP中多字节字符串操作实例详解
Aug 23 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生成器简单实例
2015/05/13 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python中模块的__all__属性详解
2017/10/26 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
python版百度语音识别功能
2019/07/09 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
python实现移动木板小游戏
2020/10/09 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
服务行业口号
2014/06/11 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
公司联欢会主持词
2015/07/04 职场文书
2016年社区文体活动总结
2016/04/06 职场文书