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+MSSQL分页的例子
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
PHP查询快递信息的方法
Mar 07 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php微信开发之关键词回复功能
Jun 13 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空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Vue.use源码分析
2017/04/22 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
python http接口自动化脚本详解
2018/01/02 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
解决python删除文件的权限错误问题
2018/04/24 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
大整数数相乘的问题
2012/07/22 面试题
保安队长职务说明书
2014/02/23 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
教师节慰问信
2015/02/15 职场文书
食品安全责任书范本
2015/05/09 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书