摘要:最終版編號(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; = GridView::widget([ "dataProvider" => $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; = GridView::widget([ "dataProvider" => $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; = GridView::widget([ "dataProvider" => $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; = GridView::widget([ "dataProvider" => $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
摘要:先來看看實(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...
摘要:于是就會(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...
摘要:今天把這個(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)作者同意必須保留...
閱讀 874·2019-08-30 15:54
閱讀 3341·2019-08-29 15:33
閱讀 2726·2019-08-29 13:48
閱讀 1298·2019-08-26 18:26
閱讀 3359·2019-08-26 13:55
閱讀 1516·2019-08-26 10:45
閱讀 1209·2019-08-26 10:19
閱讀 329·2019-08-26 10:16