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
PHP数据缓存技术
Feb 14 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
PHP文件读取功能的应用实例
May 08 PHP
php可变长参数处理函数详解
Feb 22 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 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
中国收音机工业发展史
2021/03/02 无线电
一个简单php扩展介绍与开发教程
2010/08/19 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
Angular.js基础学习之初始化
2017/03/10 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Django自定义分页效果
2017/06/27 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python进度条显示之tqmd模块
2020/08/22 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
德国团购网站:Groupon德国
2018/03/13 全球购物
日语专业个人的求职信
2013/12/03 职场文书
《泉水》教学反思
2014/04/11 职场文书
工业设计专业自荐书
2014/06/05 职场文书
消防宣传口号
2014/06/16 职场文书
劳资员岗位职责
2015/02/13 职场文书
教学督导岗位职责
2015/04/10 职场文书
热血教师观后感
2015/06/10 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL