yii2实现 "上一篇,下一篇" 功能的代码实例

发布时间 - 2026-01-10 22:51:24    点击率:

最近做了简答的文章详情页面,需要在页面底部加入上一篇,下一篇 按钮,分析了下,最基本需要有文章的标题和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实现上一篇下一篇  # yii2上一篇下一篇  # yii2使用gridView实现下拉列表筛选数据  # yii2实现分页  # 带搜索的分页功能示例  # Yii2选项卡的简单使用  # 下一篇  # 上一篇  # 的是  # 没有了  # 就不  # 考虑到  # 大家多多  # 大和  # 加减  # 地方请  # 器中  # 对了  # strong  # pre  # brush  # php  # prev_article  # class  # id  # href 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何在阿里云域名上完成建站全流程?  如何确认建站备案号应放置的具体位置?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  高防服务器如何保障网站安全无虞?  如何快速使用云服务器搭建个人网站?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Android实现代码画虚线边框背景效果  详解Android图表 MPAndroidChart折线图  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel怎么在Controller之外的地方验证数据  详解Huffman编码算法之Java实现  Laravel如何创建自定义中间件?(Middleware代码示例)  EditPlus中的正则表达式 实战(2)  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  公司门户网站制作流程,华为官网怎么做?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Python文件异常处理策略_健壮性说明【指导】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何在阿里云购买域名并搭建网站?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  lovemo网页版地址 lovemo官网手机登录  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  免费网站制作appp,免费制作app哪个平台好?  Laravel怎么使用Intervention Image库处理图片上传和缩放  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何自定义建站之星模板颜色并下载新样式?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Python文本处理实践_日志清洗解析【指导】  如何正确选择百度移动适配建站域名?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何用低价快速搭建高质量网站?  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  EditPlus中的正则表达式 实战(4)  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何将凡科建站内容保存为本地文件?