成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[yii2小心肝兒]GridView - 大衣篇

skinner / 1045人閱讀

摘要:最終版編號(hào)生成時(shí)間用戶名性別省市搞定,在運(yùn)行程序,表頭改成編號(hào)用戶名生成時(shí)間等,不要英文這個(gè)問題搞定了。是代表對(duì)進(jìn)行什么樣的格式化,默認(rèn)來對(duì)其處理。分鐘后,我郁悶的回來了,知道這回客戶提了那些亂七八糟的需求么且聽下回分解睡衣篇

增刪改查,數(shù)據(jù)庫操作的四大法寶中最常用的就是查了,一條記錄、幾條記錄、一大堆記錄。對(duì)于yii2而言,尤其后臺(tái),GridView是最常用且好用的數(shù)據(jù)列表部件,今天就說一說。

yiigridGridView;

GridView將結(jié)果集顯示為表格(table),我們從一個(gè)項(xiàng)目開始開始。
一天客戶老鄭(鄭訊)來到這里,說要我做一個(gè)頁面,將所有的會(huì)員分頁顯示在列表里,每頁10條數(shù)據(jù),并且能按照表頭排序。
好吧~

我查詢了數(shù)據(jù)庫的user表

id username password create_time sex province city
1 abei dWRvDOMGjvGQZMGlxFR2xfhsfGpzu8Rx 1479876598 1 北京 北京
2 鄭訊 dWRvDOMGjvGQZMGlxFR2xfhsfGpzu8Rx 1479876698 0 黑龍江 哈爾濱
11 馬化騰 dWRvDOMGjvGQZMGlxFR2xfhsfGpzu8Rx 1479877598 1 黑龍江 齊齊哈爾
19 馬云 dWRvDOMGjvGQZMGlxFR2xfhsfGpzu8Rx 1479886598 1 黑龍江 嫩江

然后我決定使用GridView來顯示這些數(shù)據(jù),這樣分頁、排序都直接搞定了,我知道需要兩步

第一步是在控制器UserController.php里獲得結(jié)果集

    public function actionIndex(){
        $query = User::find();
        
        $dataProvider = new ActiveDataProvider([
            "query"=>$query,
            "pagination"=>[
                "pagesize"=>10
            ]
        ]);
        
        return $this->render("index",[
            "dataProvider"=>$dataProvider
        ]);
    }

第二部渲染視圖
index.php

    use yiigridGridView;
    
     $dataProvider,
        "columns" => [
            "id",
            "username",
            "create_time",
            "sex",
            "province",
            "city"
        ]
    ]);?>

完活了,聰明的GridView會(huì)搞定一切,我只需要將$dataProvider傳遞給ta,并且告訴他都要顯示User模型(user表)的那些屬性,放到columns數(shù)組中即可。
就這樣,表格出來了,且每個(gè)表都都能排序,客戶的需求達(dá)到了。

30分鐘后我拿給鄭訊看,見他默默無語,說了幾句話。

表頭改成編號(hào)、用戶名、生成時(shí)間等,不要英文。

會(huì)員生成時(shí)間我看不懂,改成年月日十分秒吧

性別改成男or女

省市兩列合并,像province-city這樣

恩,客戶是上帝,改改吧~,主要是我知道:"這個(gè)其實(shí)很簡(jiǎn)單,GridView都能輕松搞定"

對(duì)于表頭的顯示,GridView是根據(jù)User模型的attributeLabels函數(shù)來決定的,現(xiàn)在就改
User.php

   /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            "id" => "ID",
            "create_time" => "Create Time",
            "username"=>"Username",
            "password"=>"Password",
            "sex"=>"Sex",            
        ];
    }

現(xiàn)在就改,60秒過去了

   /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            "id" => "編號(hào)",
            "create_time" => "生成時(shí)間",
            "username"=>"用戶名",
            "password"=>"Password",
            "sex"=>"性別",            
        ];
    }

但是,我發(fā)現(xiàn)省市怎么沒有,哦,想起來了,province和city是我后來添加到數(shù)據(jù)表的,并沒有更新User模型,那我直接加上就可以了。
最終版

   /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            "id" => "編號(hào)",
            "create_time" => "生成時(shí)間",
            "username"=>"用戶名",
            "password"=>"Password",
            "sex"=>"性別",     
            "province"=>"省",
            "city"=>"市"
        ];
    }

???搞定,在運(yùn)行程序,"表頭改成編號(hào)、用戶名、生成時(shí)間等,不要英文"這個(gè)問題搞定了。

繼續(xù)把,現(xiàn)在要處理"會(huì)員生成時(shí)間我看不懂,改成年月日十分秒吧"這個(gè)問題,它也很簡(jiǎn)單,因?yàn)槲抑莱讼騁ridView的 columns傳遞每個(gè)屬性名字外,我們還能傳遞一個(gè)自定義的數(shù)組,格式化數(shù)據(jù)、邏輯處理,啥都能干出來,相當(dāng)禽獸。
開始改視圖index.php,我只花了10秒鐘

index.php

    use yiigridGridView;
    
     $dataProvider,
        "columns" => [
            "id",
            "username",
            [
                "attribute"=>"create_time",
                "format"=>["date", "php:Y-m-d H:i:s"]
            ],
            "sex",
            "province",
            "city"
        ]
    ]);?>

"attribute"=>"create_time"

attribute要填寫,代表你在操作那個(gè)屬性,且在這里排序也是根據(jù)他來的。
format是代表對(duì)create_time進(jìn)行什么樣的格式化,默認(rèn)yiii18nFormatter 來對(duì)其處理。

刷新瀏覽器

又一個(gè)山頭給我們攻克了。

這里要提一下,[]的功能很強(qiáng)大,上面的實(shí)現(xiàn)也可以根據(jù)以下代碼來實(shí)現(xiàn)
index.php

    use yiigridGridView;
    
     $dataProvider,
        "columns" => [
            "id",
            "username",
            [
                "attribute"=>"create_time",
                "value"=>function($data){
                    return date("Y-m-d H:i:s",$data->create_time);
                }
            ],
            "sex",
            "province",
            "city"
        ]
    ]);?>

"性別改成男女",不多言,直接代碼

index.php

    use yiigridGridView;
    
     $dataProvider,
        "columns" => [
            "id",
            "username",
            [
                "attribute"=>"create_time",
                "format"=>["date", "php:Y-m-d H:i:s"]
            ],
            [
                "attribute"=>"sex",
                "value"=>function($data){
                    return $data->sex == 1 ? "男" : "女";
                }
            ],
            "province",
            "city"
        ]
    ]);?>

刷新瀏覽器

value是一個(gè)很好的屬性,當(dāng)你不知道有沒有提供內(nèi)置命令的時(shí)候,都可以使用value去用自己的思路實(shí)現(xiàn)需求。

還有最后一個(gè),"省市兩列合并,像province-city這樣",勝利就在前方,我想你已經(jīng)有了思路。
只需要改一點(diǎn)

   [
        "attribute"=>"province",
        "value"=>function($data){
            return $data->province."-".$data->city;
        }
   ]

是的,你的思路是對(duì)的。但是發(fā)現(xiàn)一個(gè)問題,表頭顯示"省",ta應(yīng)該顯示"省市"才對(duì),不要緊,我們熱烈歡迎label屬性出場(chǎng)。

   [
        "label"=>"省市",
        "attribute"=>"province",
        "value"=>function($data){
            return $data->province."-".$data->city;
        }
   ]

最后我看了下。

不錯(cuò)不錯(cuò),喝杯茶,一會(huì)去給客戶看。

10分鐘后,我郁悶的回來了,知道這回客戶提了那些亂七八糟的需求么?且聽下回分解《GridView - 睡衣篇》

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22343.html

相關(guān)文章

  • Yii2使用GridView實(shí)現(xiàn)數(shù)據(jù)全選及批量刪除按鈕

    摘要:先來看看實(shí)現(xiàn)的效果關(guān)鍵代碼設(shè)置顯示最下面的設(shè)置每行數(shù)據(jù)的復(fù)選框?qū)傩詣h除設(shè)置刪除按鈕垮列顯示其他列每個(gè)都要增加項(xiàng),設(shè)置為,達(dá)到隱藏單元格的目的啟用禁用管理操作獲取選擇的數(shù)據(jù)最后我們就可以提交到相應(yīng)的控制器。 先來看看實(shí)現(xiàn)的效果 showImg(https://segmentfault.com/img/bVJIqC?w=658&h=279); 關(guān)鍵代碼 獲取選擇的數(shù)據(jù) var i...

    lykops 評(píng)論0 收藏0
  • Yii2實(shí)現(xiàn)跨mysql數(shù)據(jù)庫關(guān)聯(lián)查詢排序功能

    摘要:于是就會(huì)報(bào)出這樣一個(gè)錯(cuò)誤要在兩個(gè)數(shù)據(jù)庫同一臺(tái)服務(wù)器上進(jìn)行關(guān)聯(lián)數(shù)據(jù)查詢,純語句如下轉(zhuǎn)化成語句時(shí)默認(rèn)不會(huì)在表明前添加數(shù)據(jù)庫名,于是在執(zhí)行語句時(shí)就會(huì)默認(rèn)此表在數(shù)據(jù)庫下。默認(rèn)是這樣的只需要在表明前添加數(shù)據(jù)庫名為了提高代碼穩(wěn)定性,可以這樣寫 背景:在一個(gè)mysql服務(wù)器上(注意:兩個(gè)數(shù)據(jù)庫必須在同一個(gè)mysql服務(wù)器上)有兩個(gè)數(shù)據(jù)庫: memory (存儲(chǔ)常規(guī)數(shù)據(jù)表) 中有一個(gè) use...

    lx1036 評(píng)論0 收藏0
  • yii2 ActiveRecord多表關(guān)聯(lián)以及多表關(guān)聯(lián)搜索的實(shí)現(xiàn)

    摘要:今天把這個(gè)問題講明白了,看看是怎么個(gè)多表關(guān)聯(lián)以及如何去優(yōu)化這個(gè)關(guān)聯(lián)?,F(xiàn)需要在列表展示表的來源渠道,且該渠道可搜索。關(guān)聯(lián)表字段增加查詢中的搜索模型也是通過實(shí)現(xiàn)的,該模型通過控制著哪個(gè)字段可搜索,哪個(gè)字段不可搜索。 作者:白狼 出處:http://www.manks.top/yii2_many_ar_relation_search.html 本文版權(quán)歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留...

    venmos 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

skinner

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<