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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP4(windows版本)中的COM函数
Oct 09 PHP
如何开发一个虚拟域名系统
Oct 09 PHP
php采集速度探究总结(原创)
Apr 18 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
Jul 01 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
详解php比较操作符的安全问题
Dec 03 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
PHP实现APP微信支付的实例讲解
Feb 10 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+SqlServer实现分页显示
2006/10/09 PHP
PHP 文件上传全攻略
2010/04/28 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
js+HTML5实现视频截图的方法
2015/06/16 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
python模糊图片过滤的方法
2018/12/14 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python调用C语言的实现
2019/07/26 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
浅析Python中字符串的intern机制
2020/10/03 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
工厂门卫岗位职责
2013/11/25 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
云台山导游词
2015/02/03 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
详解Vue router路由
2021/11/20 Vue.js
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫