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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
PHP 可阅读随机字符串代码
May 26 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP中的一些常用函数收集
May 26 PHP
Yii rules常用规则示例
Mar 15 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 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编程网上资源导航
2006/10/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
python 日志增量抓取实现方法
2018/04/28 Python
关于python多重赋值的小问题
2019/04/17 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
大学生应聘推荐信范文
2013/11/19 职场文书
物流仓管员岗位职责
2013/12/04 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Go语言中的UTF-8实现
2021/04/26 Golang
python中filter,map,reduce的作用
2022/06/10 Python