最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

YII2框架中ActiveDataProvider與GridView的配合使用操作示例

 更新時(shí)間:2020年03月18日 11:42:44   作者:懷素真  
這篇文章主要介紹了YII2框架中ActiveDataProvider與GridView的配合使用操作,結(jié)合實(shí)例形式分析了YII2框架中ActiveDataProvider與GridView的功能及配合使用相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了YII2框架中ActiveDataProvider與GridView的配合使用操作。分享給大家供大家參考,具體如下:

YII2中ActiveDataProvider可以使用yii\db\Query或yii\db\ActiveQuery的對(duì)象,方便我們構(gòu)造復(fù)雜的查詢篩選語句。

配合強(qiáng)大的GridView,快速的顯示我們想要的數(shù)據(jù)。

通過上面的兩個(gè)工具,我們快速的顯示用戶表信息。用戶表結(jié)構(gòu)如下:

我們創(chuàng)建一個(gè)用戶模型MyUser.php,代碼如下:

<?php

namespace app\models;

use yii\db\ActiveRecord;
use yii\data\ActiveDataProvider;

class MyUser extends ActiveRecord
{

  //返回要操作的表名
  public static function tableName()
  {
    return '{{%user}}';
  }

  //設(shè)置規(guī)則
  //注意,如果沒有給字段設(shè)置規(guī)則,GridView的篩選項(xiàng)是不會(huì)出現(xiàn)的
  public function rules()
  {
    return [
      [['id', 'name', 'sex', 'age'], 'trim'],
      [['id', 'sex', 'age'], 'integer'],
      ['name', 'string'],
    ];
  }

  //查詢
  public function search($params)
  {
    //首先我們先獲取一個(gè)ActiveQuery
    $query = self::find();
    //然后創(chuàng)建一個(gè)ActiveDataProvider對(duì)象
    $provider = new ActiveDataProvider([
      //為ActiveDataProvider對(duì)象提供一個(gè)查詢對(duì)象
      'query' => $query,
      //設(shè)置分頁參數(shù)
      'pagination' => [
        //分頁大小
        'pageSize' => 3,
        //設(shè)置地址欄當(dāng)前頁數(shù)參數(shù)名
        'pageParam' => 'p',
        //設(shè)置地址欄分頁大小參數(shù)名
        'pageSizeParam' => 'pageSize',
      ],
      //設(shè)置排序
      'sort' => [
        //默認(rèn)排序方式
        'defaultOrder' => [
          'id' => SORT_DESC,
        ],
        //參與排序的字段
        'attributes' => [
          'id', 'name', 'sex', 'age'
        ],
      ],
    ]);

    //如果驗(yàn)證沒通過,直接返回
    if (!($this->load($params) && $this->validate())) {
      return $provider;
    }

    //增加過濾條件
    $query->andFilterWhere(['id' => $this->id])
      ->andFilterWhere(['like', 'name', $this->name])
      ->andFilterWhere(['sex' => $this->sex])
      ->andFilterWhere(['age' => $this->age]);

    return $provider;
  }
}

然后,創(chuàng)建控制器TestController.php,代碼如下:

<?php

namespace app\controllers;

use YII;
use yii\web\Controller;
use app\models\MyUser;

class TestController extends Controller
{
  public function actionTest()
  {

    $user = new MyUser();
    //調(diào)用模型search方法,把get參數(shù)傳進(jìn)去
    $provider = $user->search(YII::$app->request->get());

    return $this->render('test', [
      'model' => $user,
      'provider' => $provider,
    ]);
  }
}

視圖頁面test.php,代碼如下:

<?php
use yii\helpers\Url;
use yii\helpers\Html;
use yii\grid\GridView;
?>

<div id="page-wrapper">
  <div class="row">
    <div class="col-lg-12">
      <button class="btn btn-primary" id="showSelBtn">顯示我選中的</button>
    </div>
  </div>
  <div class="row">
    <div class="col-lg-12">
      <?php echo GridView::widget([
        //設(shè)置GridView的ID
        'id' => 'myUserGridView',
        //設(shè)置數(shù)據(jù)提供器
        'dataProvider' => $provider,
        //設(shè)置篩選模型
        'filterModel' => $model,
        'columns' => [
          //復(fù)選框列
          ['class' => 'yii\grid\CheckboxColumn'],
          //顯示序號(hào)列
          ['class' => 'yii\grid\SerialColumn'],
          [
            //設(shè)置字段顯示標(biāo)題
            'label' => 'ID',
            //字段名
            'attribute' => 'id',
            //格式化
            'format' => 'raw',
            //設(shè)置單元格樣式
            'headerOptions' => [
              'style' => 'width:120px;',
            ],
          ],
          [
            'label' => '姓名',
            'attribute' => 'name',
            'format' => 'raw',
          ],
          [
            'label' => '頭像',
            'attribute' => 'head_img',
            'format' => 'raw',
            //通過該返回值,我們可以任意控制列數(shù)據(jù)的顯示
            //$data指向的是當(dāng)前行的數(shù)據(jù)結(jié)果集
            'value' => function ($data) {
              return '<img src="' . '/' . ltrim($data->head_img, '/') . '" width="60px">';
            },
          ],
          [
            'label' => '性別',
            //設(shè)置篩選選項(xiàng)
            'filter' => [0 => '男', 1 => '女'],
            'attribute' => 'sex',
            'format' => 'raw',
            'value' => function ($data) {
              return ($data->sex == 0) ? '男' : '女';
            }
          ],
          [
            'label' => '年齡',
            'attribute' => 'age',
            'format' => 'raw',
          ],
          [
            'header' => '操作',
            'class' => 'yii\grid\ActionColumn',
            //設(shè)置顯示模板
            'template' => '{upd} {del}',
            //下面的按鈕設(shè)置,與上面的模板設(shè)置相關(guān)聯(lián)
            'buttons' => [
              'upd' => function ($url, $model, $key) {
                return '<a href="' . Url::toRoute(['test/upd', 'id' => $key]) . '" rel="external nofollow" class="btn btn-warning">修改</a>';
              },
              'del' => function ($url, $model, $key) {
                return '<a href="' . Url::toRoute(['test/del', 'id' => $key]) . '" rel="external nofollow" class="btn btn-danger">刪除</a>';
              },
            ],
          ],
        ],
      ]); ?>
    </div>
  </div>
</div>

<?php echo Html::jsFile('@web/js/jquery-3.3.1.min.js'); ?>
<script type="text/javascript">
  $("#showSelBtn").on("click", function () {
    var keys = $("#myUserGridView").yiiGridView('getSelectedRows');
    alert(keys);
  });
</script>

顯示結(jié)果如下:

更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Laravel 5框架學(xué)習(xí)之表單

    Laravel 5框架學(xué)習(xí)之表單

    Laravel 5.0 新引入的表單請(qǐng)求 (Form Request) 特性提供了集規(guī)范性 (差不多就是 "最佳實(shí)踐" 的意思) 和便捷性 (這是比之前任何一種選擇都更強(qiáng)大也更便捷的方式) 于一體的, 在 Laravel 中執(zhí)行數(shù)據(jù)檢查和驗(yàn)證的新手段.
    2015-04-04
  • PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator)入門與應(yīng)用詳解

    PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator)入門與應(yīng)用詳解

    這篇文章主要介紹了PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator),結(jié)合實(shí)例形式詳細(xì)分析了PHP裝飾者模式的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • 通過源碼解析Laravel的依賴注入

    通過源碼解析Laravel的依賴注入

    這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • php中計(jì)算未知長度的字符串哪個(gè)字符出現(xiàn)的次數(shù)最多的代碼

    php中計(jì)算未知長度的字符串哪個(gè)字符出現(xiàn)的次數(shù)最多的代碼

    php中計(jì)算未知長度的字符串哪個(gè)字符出現(xiàn)的次數(shù)最多的代碼,需要的朋友可以參考下
    2012-08-08
  • cakephp常見知識(shí)點(diǎn)匯總

    cakephp常見知識(shí)點(diǎn)匯總

    這篇文章主要介紹了cakephp常見知識(shí)點(diǎn),匯總整理了cakephp的模板、數(shù)據(jù)庫、日志、表單等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • 基于php實(shí)現(xiàn)七牛抓取遠(yuǎn)程圖片

    基于php實(shí)現(xiàn)七牛抓取遠(yuǎn)程圖片

    由于公司網(wǎng)站之前的用戶頭像都是存儲(chǔ)在自己的服務(wù)器上的,后來感覺管理不方便,新增加的用戶頭像都上傳到了七牛,為了方便統(tǒng)一管理,領(lǐng)導(dǎo)說把本地服務(wù)器的頭像全部遷移到了七牛
    2015-12-12
  • Symfony2安裝的方法(2種方法)

    Symfony2安裝的方法(2種方法)

    這篇文章主要介紹了Symfony2安裝的方法,較為詳細(xì)的分析了2種安裝方法與具體步驟,需要的朋友可以參考下
    2016-02-02
  • PHP服務(wù)器端API原理及示例講解(接口開發(fā))

    PHP服務(wù)器端API原理及示例講解(接口開發(fā))

    下面小編就為大家分享一篇PHP服務(wù)器端API原理及示例講解(接口開發(fā)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • php redis 處理websocket聊天記錄的實(shí)例代碼

    php redis 處理websocket聊天記錄的實(shí)例代碼

    本文通過實(shí)例代碼給大家介紹了php redis 處理websocket聊天記錄的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • thinkphp瀏覽歷史功能實(shí)現(xiàn)方法

    thinkphp瀏覽歷史功能實(shí)現(xiàn)方法

    這篇文章主要介紹了thinkphp瀏覽歷史功能實(shí)現(xiàn)方法,可實(shí)現(xiàn)瀏覽器的瀏覽歷史功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

长岛县| 诏安县| 岢岚县| 林周县| 隆尧县| 太谷县| 漯河市| 惠安县| 金溪县| 桦川县| 耒阳市| 射洪县| 临沂市| 曲阜市| 威宁| 娱乐| 黄冈市| 卫辉市| 陈巴尔虎旗| 万州区| 邻水| 洛南县| 南宁市| 泽普县| 江西省| 甘德县| 康保县| 大姚县| 自贡市| 岢岚县| 咸阳市| 济南市| 濉溪县| 齐河县| 涪陵区| 错那县| 璧山县| 涞水县| 东源县| 筠连县| 喀什市|