真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Yii2ArrayDataProvider的一些心得

概述

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

成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元潛山做網(wǎng)站,已為上家服務(wù),為潛山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

在實(shí)際開發(fā)中,最常用的是ActiveDataProvider和SqlDataProvider,一個(gè)是使用ORM的方式從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),另一種是直接使用SQL語(yǔ)句獲取數(shù)據(jù),各有各的適用場(chǎng)合,使用起來(lái)也非常方便。

在Yii 2中,還提供了ArrayDataProvider,顧名思義,就是用數(shù)組作為數(shù)據(jù)源,這個(gè)用的比較少,因此一開始的時(shí)候還是有點(diǎn)生疏。

基本思路

簡(jiǎn)單跟蹤一下代碼就可以知道,前端表格在顯示數(shù)據(jù)的時(shí)候,其核心是要求數(shù)據(jù)以關(guān)聯(lián)數(shù)組的數(shù)組形式提供出來(lái),所以使用ArrayDataProvider的時(shí)候,也是以這種形式提供數(shù)據(jù)就好了,基本的數(shù)組格式類似如下:

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

其實(shí)這個(gè)結(jié)構(gòu),跟使用Model查詢得到的數(shù)據(jù)asArray()出來(lái)的結(jié)果是一樣的。

實(shí)現(xiàn)流程

定義Model

首先,要按照顯示的數(shù)據(jù)內(nèi)容,定義一個(gè)Model,其實(shí)不定義Model也可以,只要按照顯示的要求組織好關(guān)聯(lián)數(shù)組就可以了,但是定義Model,可以方便未來(lái)實(shí)現(xiàn)查詢、過(guò)濾。
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' => '年齡',
        ];
    }
}

看這個(gè)Model的結(jié)構(gòu)是不是很眼熟,沒(méi)錯(cuò),跟使用Yii 2的工具自動(dòng)生成的表Model是一樣一樣的,當(dāng)然,懶一點(diǎn),不繼承實(shí)現(xiàn)rules()和attributeLabels()也是沒(méi)問(wèn)題的。不過(guò),rules()可以為以后自動(dòng)查詢提供默認(rèn)的規(guī)則,而attributeLabels()可以為表格提供列標(biāo)題的文字,所以搞一個(gè)Model比較合適。

查詢

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


本文題目:Yii2ArrayDataProvider的一些心得
本文URL:http://weahome.cn/article/jdcjci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部