国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 后端開(kāi)發(fā) C#.Net教程 yii2實(shí)現(xiàn)分頁(yè),帶搜索的分頁(yè)功能示例

yii2實(shí)現(xiàn)分頁(yè),帶搜索的分頁(yè)功能示例

Jan 13, 2017 pm 03:53 PM

一、模型配置

事例會(huì)用到三個(gè)models。文章類(lèi)別表和文章表用gii生成下即可,最后一個(gè)是搜索驗(yàn)證模型。其中,只講下一個(gè)聯(lián)表和搜索驗(yàn)證。其他不用操作。

1.文章表關(guān)聯(lián)

<?php
//...other code
//關(guān)聯(lián)
public function getCate(){
    return $this->hasOne(ArticleCate::className(),[&#39;id&#39; => &#39;cid&#39;]);
  }
?>

2.搜索模型

common/models/search/創(chuàng)建ArticleSearch.php

<?php
 
namespace common\models\search;
 
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\Article;
 
class ArticleSearch extends Article
{
  //public $cname;//文章類(lèi)別名
   
  /**
   * @inheritdoc
   */
  public function rules()
  {
    return [
      [[&#39;cid&#39;,&#39;created_at&#39;, &#39;updated_at&#39;], &#39;integer&#39;],
      [[&#39;id&#39;, &#39;desc&#39;,&#39;title&#39;,&#39;cover&#39;,&#39;content&#39;], &#39;safe&#39;],
    ];
  }
 
  /**
   * @inheritdoc
   */
  public function scenarios()
  {
    // bypass scenarios() implementation in the parent class
    return Model::scenarios();
  }
 
  //搜索
  public function search($params)
  {
    $query = Article::find();
    // $query->joinWith([&#39;cate&#39;]);//關(guān)聯(lián)文章類(lèi)別表
    // $query->joinWith([&#39;author&#39; => function($query) { $query->from([&#39;author&#39; => &#39;users&#39;]); }]);
 
    $dataProvider = new ActiveDataProvider([
      &#39;query&#39; => $query,
      &#39;pagination&#39; => [
        &#39;pageSize&#39; => 2,
      ],
    ]);
    // 從參數(shù)的數(shù)據(jù)中加載過(guò)濾條件,并驗(yàn)證
    $this->load($params);
 
    if (!$this->validate()) {
      // uncomment the following line if you do not want to any records when validation fails
      // $query->where(&#39;0=1&#39;);
      return $dataProvider;
    }
 
    // 增加過(guò)濾條件來(lái)調(diào)整查詢(xún)對(duì)象
    $query->andFilterWhere([
      // &#39;cname&#39; => $this->cate.cname,
      &#39;title&#39; => $this->title,
    ]);
 
    $query->andFilterWhere([&#39;like&#39;, &#39;title&#39;, $this->title]);
    //$query->andFilterWhere([&#39;like&#39;, &#39;cate.cname&#39;, $this->cname]) ;
 
    return $dataProvider;
  }
}

二、分頁(yè)使用

方式一

首先在控制器的動(dòng)作中,創(chuàng)建分頁(yè)對(duì)象并且為其填充數(shù)據(jù):

<?php
//other code
use yii\data\Pagination;
public function actionArticlelist()
  {
    //分頁(yè)讀取類(lèi)別數(shù)據(jù)
    $model = Article::find()->with(&#39;cate&#39;);
    $pagination = new Pagination([
      &#39;defaultPageSize&#39; => 3,
      &#39;totalCount&#39; => $model->count(),
    ]);
 
    $model = $model->orderBy(&#39;id ASC&#39;)
      ->offset($pagination->offset)
      ->limit($pagination->limit)
      ->all();
 
    return $this->render(&#39;index&#39;, [
      &#39;model&#39; => $model,
      &#39;pagination&#39; => $pagination,
    ]);
  }
?>

其次在視圖中我們輸出的模板為當(dāng)前頁(yè)并通過(guò)分頁(yè)對(duì)象鏈接到該頁(yè):

<?php
use yii\widgets\LinkPager;
use yii\helpers\Html;
use yii\helpers\Url;
//other code
foreach ($models as $model) {
  // 在這里顯示 $model
}
 
// 顯示分頁(yè)
echo LinkPager::widget([
  &#39;pagination&#39; => $pagination,
  &#39;firstPageLabel&#39;=>"First",
  &#39;prevPageLabel&#39;=>&#39;Prev&#39;,
  &#39;nextPageLabel&#39;=>&#39;Next&#39;,
  &#39;lastPageLabel&#39;=>&#39;Last&#39;,
]);
?>

方式二

控制器:

<?php
    $query = Article::find()->with(&#39;cate&#39;);
 
    $provider = new ActiveDataProvider([
      &#39;query&#39; => $query,
      &#39;pagination&#39; => [
        &#39;pageSize&#39; => 3,
      ],
      &#39;sort&#39; => [
        &#39;defaultOrder&#39; => [
          //&#39;created_at&#39; => SORT_DESC,
          //&#39;title&#39; => SORT_ASC,
        ]
      ],
    ]);
    return $this->render(&#39;index&#39;, [
      &#39;model&#39; => $query,
      &#39;dataProvider&#39; => $provider
    ]);
?>

視圖:

<?php
use yii\grid\GridView;
echo GridView::widget([
  &#39;dataProvider&#39; => $dataProvider,
  //每列都有搜索框 控制器傳過(guò)來(lái)$searchModel = new ArticleSearch();
  //&#39;filterModel&#39; => $searchModel,
  &#39;layout&#39;=> &#39;{items}<div class="text-right tooltip-demo">{pager}</div>&#39;,
   &#39;pager&#39;=>[
        //&#39;options&#39;=>[&#39;class&#39;=>&#39;hidden&#39;]//關(guān)閉自帶分頁(yè)
        &#39;firstPageLabel&#39;=>"First",
        &#39;prevPageLabel&#39;=>&#39;Prev&#39;,
        &#39;nextPageLabel&#39;=>&#39;Next&#39;,
         &#39;lastPageLabel&#39;=>&#39;Last&#39;,
   ],
  &#39;columns&#39; => [
    //[&#39;class&#39; => &#39;yii\grid\SerialColumn&#39;],//序列號(hào)從1開(kāi)始
    // 數(shù)據(jù)提供者中所含數(shù)據(jù)所定義的簡(jiǎn)單的列
    // 使用的是模型的列的數(shù)據(jù)
    &#39;id&#39;,
    &#39;username&#39;,
    [&#39;label&#39;=>&#39;文章類(lèi)別&#39;, /*&#39;attribute&#39; => &#39;cid&#39;,產(chǎn)生一個(gè)a標(biāo)簽,點(diǎn)擊可排序*/ &#39;value&#39; => &#39;cate.cname&#39; ],
    [&#39;label&#39;=>&#39;發(fā)布日期&#39;,&#39;format&#39; => [&#39;date&#39;, &#39;php:Y-m-d&#39;],&#39;value&#39; => &#39;created_at&#39;],
    // 更復(fù)雜的列數(shù)據(jù)
    [&#39;label&#39;=>&#39;封面圖&#39;,&#39;format&#39;=>&#39;raw&#39;,&#39;value&#39;=>function($m){
     return Html::img($m->cover,[&#39;class&#39; => &#39;img-circle&#39;,&#39;width&#39; => 30]);
    }],
    [
      &#39;class&#39; => &#39;yii\grid\DataColumn&#39;, //由于是默認(rèn)類(lèi)型,可以省略
      &#39;value&#39; => function ($data) {
        return $data->name;
        // 如果是數(shù)組數(shù)據(jù)則為 $data[&#39;name&#39;] ,例如,使用
 
SqlDataProvider 的情形。
      },
    ],
    [
     &#39;class&#39; => &#39;yii\grid\ActionColumn&#39;,
     &#39;header&#39; => &#39;操作&#39;,
     &#39;template&#39; => &#39;{delete} {update}&#39;,//只需要展示刪除和更新
     /*&#39;headerOptions&#39; => [&#39;width&#39; => &#39;80&#39;],*/
     &#39;buttons&#39; => [
       &#39;delete&#39; => function($url, $model, $key){
           return Html::a(&#39;<i class="glyphicon glyphicon-trash"></i> 刪除&#39;,
               [&#39;artdel&#39;, &#39;id&#39; => $key],
               [&#39;class&#39; => &#39;btn btn-default btn-xs&#39;,
               &#39;data&#39; => [&#39;confirm&#39; => &#39;你確定要?jiǎng)h除文章嗎?&#39;,]
               ]);
       },
      &#39;update&#39; => function($url, $model, $key){
           return Html::a(&#39;<i class="fa fa-file"></i> 更新&#39;,
              [&#39;artedit&#39;, &#39;id&#39; => $key],
              [&#39;class&#39; => &#39;btn btn-default btn-xs&#39;]);
       },
      ],
     ],
  ],
]);
?>

三、搜索帶分頁(yè)功能

創(chuàng)建搜索模型(前面己做)

控制傳入數(shù)據(jù)

視圖顯示控制器代碼:

<?php
public function actionIndex()
{
 $searchModel = new ArticleSearch();
 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
 
  return $this->render(&#39;index&#39;, [
    &#39;searchModel&#39; => $searchModel,
    &#39;dataProvider&#39; => $dataProvider,
  ]);
 }
?>

視圖:

<?php $form = ActiveForm::begin([
  &#39;action&#39; => [&#39;index&#39;],
   &#39;method&#39; => &#39;get&#39;,
   &#39;id&#39; => &#39;cateadd-form&#39;,
   &#39;options&#39; => [&#39;class&#39; => &#39;form-horizontal&#39;],
]); ?>
           
<?= $form->field($searchModel, &#39;title&#39;,[
   &#39;options&#39;=>[&#39;class&#39;=>&#39;&#39;],
   &#39;inputOptions&#39; => [&#39;placeholder&#39; => &#39;文章搜索&#39;,&#39;class&#39; => &#39;input-sm form-control&#39;],
])->label(false) ?>
  <?= Html::submitButton(&#39;Go!&#39;, [&#39;class&#39; => &#39;btn btn-sm btn-primary&#39;]) ?>
<?php ActiveForm::end(); ?>
<?= GridView::widget([
          &#39;dataProvider&#39; => $dataProvider,
          &#39;layout&#39;=> &#39;{items}<div class="text-right tooltip-demo">{pager}</div>&#39;,
          &#39;pager&#39;=>[
            //&#39;options&#39;=>[&#39;class&#39;=>&#39;hidden&#39;]//關(guān)閉自帶分頁(yè)
            &#39;firstPageLabel&#39;=>"First",
            &#39;prevPageLabel&#39;=>&#39;Prev&#39;,
            &#39;nextPageLabel&#39;=>&#39;Next&#39;,
            &#39;lastPageLabel&#39;=>&#39;Last&#39;,
          ],
       //這部分和上面的分頁(yè)是一樣的

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持PHP中文網(wǎng)。

更多yii2實(shí)現(xiàn)分頁(yè),帶搜索的分頁(yè)功能示例相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

C#中產(chǎn)量關(guān)鍵字對(duì)創(chuàng)建迭代器的意義是什么? C#中產(chǎn)量關(guān)鍵字對(duì)創(chuàng)建迭代器的意義是什么? Jun 19, 2025 am 12:17 AM

healieldKeyWordinc#簡(jiǎn)化了creationeratoratorabyautomationalingaseratingastatemachinethatemachinathablesLazyEvaluation.1.ItallowSreturningReturningInturningItemSoneatAtiMeTimeYielderturn,pausingexecutionBeteachieneachIneachIneachIneachIneachIneachIneachIneachItem,whoisidealforlargeordeNemicSequences.2.yieldBreakcanbeus.2.yieldBreakcanbeus

什么是依賴(lài)性注入(DI),如何在C#中實(shí)現(xiàn)(例如,在ASP.NET Core中使用內(nèi)置DI)? 什么是依賴(lài)性注入(DI),如何在C#中實(shí)現(xiàn)(例如,在ASP.NET Core中使用內(nèi)置DI)? Jun 30, 2025 am 02:06 AM

DependencyInjection(DI)inC#isadesignpatternthatenhancesmodularity,testability,andmaintainabilitybyallowingclassestoreceivedependenciesexternally.1.DIpromotesloosecouplingbydecouplingobjectcreationfromusage.2.Itsimplifiestestingthroughmockobjectinject

IDisposable接口和C#中的使用語(yǔ)句的目的是什么? IDisposable接口和C#中的使用語(yǔ)句的目的是什么? Jun 27, 2025 am 02:18 AM

IDisposable和using在C#中的作用是高效且確定性地管理非托管資源。1.IDisposable提供Dispose()方法,使類(lèi)能明確定義如何釋放非托管資源;2.using語(yǔ)句確保對(duì)象超出范圍時(shí)自動(dòng)調(diào)用Dispose(),簡(jiǎn)化資源管理并避免泄漏;3.使用時(shí)需注意對(duì)象必須實(shí)現(xiàn)IDisposable,可聲明多個(gè)對(duì)象,并應(yīng)始終對(duì)如StreamReader等類(lèi)型使用using;4.常見(jiàn)最佳實(shí)踐包括不要依賴(lài)析構(gòu)函數(shù)清理、正確處理嵌套對(duì)象及實(shí)現(xiàn)Dispose(bool)模式。

Lambda表達(dá)式和LINQ(語(yǔ)言集成查詢(xún))如何增強(qiáng)C#中的數(shù)據(jù)操作? Lambda表達(dá)式和LINQ(語(yǔ)言集成查詢(xún))如何增強(qiáng)C#中的數(shù)據(jù)操作? Jun 20, 2025 am 12:16 AM

LambdaexpressionsandLINQsimplifydatamanipulationinC#byenablingconcise,readable,andefficientcode.1.Lambdaexpressionsallowinlinefunctiondefinitions,makingiteasiertopasslogicasargumentsforfiltering,transforming,sorting,andaggregatingdatadirectlywithinme

C#8中的可無(wú)效參考類(lèi)型(NRT)是什么,它們?nèi)绾螏椭乐筃ullReferenceException? C#8中的可無(wú)效參考類(lèi)型(NRT)是什么,它們?nèi)绾螏椭乐筃ullReferenceException? Jun 21, 2025 am 12:36 AM

Nullablereferencetypes(NRTs)inC#8 helpcatchNullReferenceExceptionerrorsatcompiletimebymakingreferencetypesnon-nullablebydefault,requiringexplicitdeclarationfornullability.NRTsmustbeenabledeitherinthe.csprojfilewithenableoratthetopofa.csfileusing#null

使用C#開(kāi)發(fā)時(shí),有哪些常見(jiàn)的陷阱或反圖案可以避免? 使用C#開(kāi)發(fā)時(shí),有哪些常見(jiàn)的陷阱或反圖案可以避免? Jun 23, 2025 am 12:05 AM

C#開(kāi)發(fā)中常見(jiàn)四大“反模式”問(wèn)題需避免。一是不合理使用async/await導(dǎo)致死鎖或性能下降,應(yīng)堅(jiān)持全異步原則、配置ConfigureAwait(false)并規(guī)范命名;二是過(guò)度依賴(lài)var影響可讀性,應(yīng)在類(lèi)型不明確時(shí)顯式聲明并統(tǒng)一團(tuán)隊(duì)規(guī)范;三是錯(cuò)誤使用Dispose和資源管理引發(fā)泄漏,應(yīng)正確使用using語(yǔ)句及實(shí)現(xiàn)IDisposable標(biāo)準(zhǔn)模式;四是濫用靜態(tài)類(lèi)或單例造成測(cè)試?yán)щy,應(yīng)優(yōu)先依賴(lài)注入、保持無(wú)狀態(tài)或由容器管理生命周期。避開(kāi)這些誤區(qū)可顯著提升代碼質(zhì)量與維護(hù)性。

如何在C#中使用跨度和內(nèi)存來(lái)優(yōu)化內(nèi)存使用情況并減少分配? 如何在C#中使用跨度和內(nèi)存來(lái)優(yōu)化內(nèi)存使用情況并減少分配? Jun 18, 2025 am 12:11 AM

Span和Memory通過(guò)減少內(nèi)存分配提升C#性能。1.Span避免數(shù)組復(fù)制,提供對(duì)現(xiàn)有內(nèi)存的輕量引用,適用于解析二進(jìn)制協(xié)議、字符串操作及高性能緩沖區(qū)管理;2.Memory支持跨異步方法傳遞內(nèi)存切片,適用于需要更靈活生命周期的場(chǎng)景;3.二者降低GC壓力,通過(guò)重用緩沖區(qū)、避免臨時(shí)拷貝優(yōu)化性能;4.Span受限于棧上使用,不可存儲(chǔ)于類(lèi)或用于異步方法,需注意避免調(diào)用.ToArray()等導(dǎo)致重新分配的操作。

您能在面向?qū)ο蟮脑O(shè)計(jì)中解釋可靠的原理及其應(yīng)用嗎? 您能在面向?qū)ο蟮脑O(shè)計(jì)中解釋可靠的原理及其應(yīng)用嗎? Jun 25, 2025 am 12:47 AM

SOLID原則是面向?qū)ο缶幊讨刑嵘a可維護(hù)性和擴(kuò)展性的五項(xiàng)設(shè)計(jì)原則,它們分別是:1.單一職責(zé)原則(SRP)要求類(lèi)只承擔(dān)一個(gè)職責(zé),如將報(bào)告生成與郵件發(fā)送分離;2.開(kāi)閉原則(OCP)強(qiáng)調(diào)通過(guò)接口或抽象類(lèi)支持?jǐn)U展而不修改原有代碼,如使用IShape接口實(shí)現(xiàn)不同圖形的面積計(jì)算;3.里氏替換原則(LSP)要求子類(lèi)能替換父類(lèi)而不破壞邏輯,如Square不應(yīng)錯(cuò)誤繼承Rectangle導(dǎo)致行為異常;4.接口隔離原則(ISP)主張定義細(xì)粒度接口,如拆分打印與掃描功能避免冗余依賴(lài);5.依賴(lài)倒置原則(DIP)提倡依

See all articles