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 和 MYSQL
Oct 09 PHP
用PHP产生动态的影像图
Oct 09 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
PHP编写简单的App接口
Aug 28 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 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操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
php的curl封装类用法实例
2014/11/07 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
python装饰器decorator介绍
2014/11/21 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
浅谈Python 参数与变量
2020/06/20 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
开工仪式主持词
2014/03/20 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
财产保全担保书
2015/01/20 职场文书
尊师重教主题班会
2015/08/14 职场文书