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 相关文章推荐
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 PHP
php+js实现点赞功能的示例详解
Aug 07 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 过滤危险html代码
2009/06/29 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python爬虫实现验证码登录代码实例
2019/05/10 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
python如何设置静态变量
2020/09/07 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
初中生物教学反思
2016/02/20 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python