萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> yii2實現 上一篇,下一篇 功能的代碼實例

yii2實現 上一篇,下一篇 功能的代碼實例

小編推薦的這篇文章介紹了yii2實現 "上一篇,下一篇" 功能的代碼實例,非常實用,有興趣的同學快來看看吧。

最近做了簡答的文章詳情頁面,需要在頁面底部加入上一篇,下一篇 按鈕,分析了下,最基本需要有文章的標題和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,

    );

視圖中

 代碼如下 復制代碼

<divclass="left">

    <p>上一篇:

      <a href="<?=$model['prev_article']['url']?>">

        <?=$model['prev_article']['title']?>

      </a>

    </p>

  </div>

  <divclass="right">

    <p>下一篇:

      <a href="<?=$model['next_article']['url']?>">

        <?=$model['next_article']['title']?>

      </a>

    </p>

  </div>

copyright © 萬盛學電腦網 all rights reserved