91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Yii 2 ArrayDataProvider的一些心得

發布時間:2020-06-09 16:16:45 來源:網絡 閱讀:5333 作者:tywali 欄目:web開發

概述

在Yii 2中,頁面上用表格顯示數據時,一般是用數據提供器(Data Provider)來給表格作為數據源,這個思路就是不管你數據來源是什么,但是最終提供給頁面表格顯示的時候,其格式和接口都是一致的,這樣就有效的實現了前后臺的解耦。

在實際開發中,最常用的是ActiveDataProvider和SqlDataProvider,一個是使用ORM的方式從數據庫獲取數據,另一種是直接使用SQL語句獲取數據,各有各的適用場合,使用起來也非常方便。

在Yii 2中,還提供了ArrayDataProvider,顧名思義,就是用數組作為數據源,這個用的比較少,因此一開始的時候還是有點生疏。

基本思路

簡單跟蹤一下代碼就可以知道,前端表格在顯示數據的時候,其核心是要求數據以關聯數組的數組形式提供出來,所以使用ArrayDataProvider的時候,也是以這種形式提供數據就好了,基本的數組格式類似如下:

$data = [
  [
      'name' => 'zhangfei',
        'age' => 20,
    ],
  [
      'name' => 'guanyu',
        'age' => 20,
    ],
]

其實這個結構,跟使用Model查詢得到的數據asArray()出來的結果是一樣的。

實現流程

定義Model

首先,要按照顯示的數據內容,定義一個Model,其實不定義Model也可以,只要按照顯示的要求組織好關聯數組就可以了,但是定義Model,可以方便未來實現查詢、過濾。
Model的定義大致如下:

class ArrStudentModel extends Model
{
    public $name;
    public $age;

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['name'], 'string'],
            [['age'], 'integer']
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'name' => '姓名',
            'age' => '年齡',
        ];
    }
}

看這個Model的結構是不是很眼熟,沒錯,跟使用Yii 2的工具自動生成的表Model是一樣一樣的,當然,懶一點,不繼承實現rules()和attributeLabels()也是沒問題的。不過,rules()可以為以后自動查詢提供默認的規則,而attributeLabels()可以為表格提供列標題的文字,所以搞一個Model比較合適。

查詢

查詢的做法也很簡單,跟ActiveRecord同樣處理,在Model中提供查詢的接口即可。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

裕民县| 榆树市| 都兰县| 凤台县| 桂林市| 天等县| 长武县| 新巴尔虎左旗| 江华| 康马县| 泉州市| 阳高县| 时尚| 株洲市| 汪清县| 丰都县| 丽水市| 金秀| 中方县| 司法| 元阳县| 平湖市| 和政县| 阜城县| 娄底市| 仁怀市| 巴林右旗| 子洲县| 张家口市| 鄂托克前旗| 信宜市| 新乡县| 沾化县| 绥滨县| 水富县| 合江县| 新蔡县| 虎林市| 隆子县| 莱州市| 吕梁市|