Yii2 GridView實(shí)現(xiàn)列表頁直接修改數(shù)據(jù)的方法
什么意思呢?我來簡(jiǎn)單的描述下,小編妹子提的需求是這樣的,你看啊,你這列表頁的數(shù)據(jù),能不能我就直接在列表上進(jìn)行點(diǎn)一下就直接修改啊,我再點(diǎn)進(jìn)去修改多麻煩,太不方便了。這尼瑪,這需求,是不是真想給她一棒槌。
ok,我們今天就來看看在yii2中如何去利用gridview實(shí)現(xiàn)列表上直接修改的功能,很全面哦,我們盡量各種類型的屬性都給出實(shí)例。
第一步,我們先來部署好yii2-grid
利用composer安裝yii2-grid
composer require kartik-v/yii2-grid "@dev"
如果你在安裝的過程中需要讓你輸出Token,此時(shí)也就是需要你登錄你的github帳號(hào),通過setting>personal access tokens獲取token值后輸入你的token值,回車就好。
安裝好了之后,我們對(duì)module進(jìn)行如下配置,這個(gè)是必須要配置的
'modules' => [ 'gridview' => [ 'class' => '\kartik\grid\Module' ] ];
前面我們說了,要先把yii2-grid部署好,下載配置好之后,我們打開視圖文件并參考下面的代碼修改你的文件
// use yii\grid\GridView; //這里屏蔽掉yii的gridview,user我們剛剛安裝的gridview use kartik\grid\GridView; <?= GridView::widget([ //...... 'export' => false, 'columns' => [ //...... ], ?>
上面代碼中我們只需要添加一項(xiàng) 'export' => false, 即可,你原先的gridview無需改動(dòng)。
然后我們安裝yii2-editable
composer require kartik-v/yii2-editable "@dev"
安裝好了后,我們?cè)趧偛排渲煤胓ridview的文件中引入editable
use kartik\editable\Editable;
首先介紹下textInput類型的修改,圖如下

從上圖中可以很輕松的看到編輯的效果,直接貼代碼
[ 'attribute' => 'title', 'class'=>'kartik\grid\EditableColumn', ],
但是從上圖中我們也看到了,彈窗式修改呢不是很方便,我們接下來看看方便點(diǎn)的操作方式
[ 'attribute' => 'title', 'class'=>'kartik\grid\EditableColumn', 'editableOptions'=>[ 'asPopover' => false, ], ],
只需要對(duì)要修改的屬性值點(diǎn)擊一下可以直接進(jìn)行修改,我們來看看這樣會(huì)有什么問題

也許你發(fā)現(xiàn)了,編輯框的寬度太小了,操作不是很方便,我們把input改為textarea會(huì)不會(huì)好點(diǎn)?試試看,當(dāng)然你也可以給當(dāng)前單元格指定headerOptions設(shè)定寬度,關(guān)于gridview常見操作可點(diǎn)擊參考

看圖片上果然效果好很多,直接貼代碼
[ 'attribute' => 'title', 'class'=>'kartik\grid\EditableColumn', 'editableOptions'=>[ 'asPopover' => false, 'inputType'=>\kartik\editable\Editable::INPUT_TEXTAREA, 'options' => [ 'rows' => 4, ], ], ],
有同學(xué)很好奇的點(diǎn)了圖中的兩個(gè)按鈕,一個(gè)是重置按鈕,另一個(gè)是應(yīng)用按鈕,重置還好,很容易理解,但是嘛,為啥點(diǎn)了應(yīng)用按鈕就貌似一直在處理中的意思呢?別急別急,從一開始到現(xiàn)在乃至接下來,我們都將先講解view中的配置,其實(shí)這里你點(diǎn)擊應(yīng)用按鈕后也就異步請(qǐng)求了后端,我們后面詳細(xì)的說道。
如果你的column是數(shù)字類型的呢?簡(jiǎn)單嘛,input內(nèi)直接修改就好了,可如果你想要下面截圖中的效果,需要你繼續(xù)繼續(xù)利用composer安裝touch spin widget

require kartik-v/yii2-widget-touchspin "@dev"
安裝完畢后,我們看看數(shù)字類型的屬性的修改方式
第三種,關(guān)于下拉框式的修改,我們假定字段is_delete值1顯示 2刪除且數(shù)據(jù)庫(kù)存的值是1 2這種數(shù)字類型,看效果圖然后我們?cè)儋N代碼

左右兩邊是兩個(gè)屬性,為了做對(duì)比說明,左側(cè)是不可修改的屬性展示,代碼如下
[
'attribute' => 'is_delete',
'class'=>'kartik\grid\EditableColumn',
'editableOptions'=>[
'inputType'=>\kartik\editable\Editable::INPUT_DROPDOWN_LIST,
'asPopover' => false,
'data' => Article::itemAlias('is_delete'),
],
'value' => function ($model) {
return Article::itemAlias('is_delete', $model->is_delete);
},
'filter' => Article::itemAlias('is_delete'),
],
第四個(gè),我們講解下日期組件和時(shí)間組件,先截圖看效果,然后在安裝
//日期組件 composer require kartik-v/yii2-widget-datepicker "@dev" //時(shí)間組件 composer require kartik-v/yii2-widget-datetimepicker "*" //日期組件 [ 'attribute' => 'created_at', //這個(gè)設(shè)定表格的寬度 // 'headerOptions' => ['width' => '150px'], 'class'=>'kartik\grid\EditableColumn', 'editableOptions'=>[ 'inputType'=>\kartik\editable\Editable::INPUT_DATE, 'asPopover' => false, //這個(gè)設(shè)定我們組件的寬度 'contentOptions' => ['style'=>'width:180px'], 'options' => [ 'pluginOptions' => [ //設(shè)定我們?nèi)掌诮M件的格式 'format' => 'yyyy-mm-dd', ] ], ], 'format' => ['date', 'Y-m-d'], ], //時(shí)間組件 [ 'attribute' => 'updated_at', // 'headerOptions' => ['width' => '150px'], 'class'=>'kartik\grid\EditableColumn', 'editableOptions'=>[ 'inputType'=>\kartik\editable\Editable::INPUT_DATETIME, 'asPopover' => false, 'contentOptions' => ['style'=>'width:250px'], ], ],
基本上就這4中類型吧,view配置好了,我們就需要配置controller層進(jìn)行異步操作了,我們來看看是怎么操作的。
聲明:如果你的gridview是在視圖article/index內(nèi),那么接下來的操作你需要在article控制器的index內(nèi)操作。
use yii\helpers\Json;
public function actionIndex()
{
$searchModel = new ArticleSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if (Yii::$app->request->post('hasEditable')) {
$id = Yii::$app->request->post('editableKey');
$model = Article::findOne(['id' => $id]);
$out = Json::encode(['output'=>'', 'message'=>'']);
$posted = current($_POST['Article']);
$post = ['Article' => $posted];
if ($model->load($post)) {
$model->save();
$output = '';
isset($posted['title']) && $output = $model->title;
// 其他的這里就忽略了,大致可參考這個(gè)title
}
$out = Json::encode(['output'=>$output, 'message'=>'']);
echo $out;
return;
}
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
關(guān)于小編給大家介紹的Yii2 GridView實(shí)現(xiàn)列表頁直接修改數(shù)據(jù)的方法就給大家介紹到這里,希望對(duì)大家有所幫助,如果大家想了解更多內(nèi)容敬請(qǐng)關(guān)注腳本之家網(wǎng)站。
- Yii中CArrayDataProvider和CActiveDataProvider區(qū)別實(shí)例分析
- 淺析Yii2中GridView常見操作
- yii2.0之GridView自定義按鈕和鏈接用法
- 淺析Yii2 gridview實(shí)現(xiàn)批量刪除教程
- 淺析Yii2 GridView實(shí)現(xiàn)下拉搜索教程
- 淺析Yii2 GridView 日期格式化并實(shí)現(xiàn)日期可搜索教程
- yii2使用GridView實(shí)現(xiàn)數(shù)據(jù)全選及批量刪除按鈕示例
- yii2中結(jié)合gridview如何使用modal彈窗實(shí)例代碼詳解
- yii2使用gridView實(shí)現(xiàn)下拉列表篩選數(shù)據(jù)
- Yii2.0小部件GridView(兩表聯(lián)查/搜索/分頁)功能的實(shí)現(xiàn)代碼
- yii2-GridView在開發(fā)中常用的功能及技巧總結(jié)
- YII2框架中ActiveDataProvider與GridView的配合使用操作示例
相關(guān)文章
php反引號(hào)與短標(biāo)簽?zāi)_本示例
這篇文章主要為大家介紹了php反引號(hào)與短標(biāo)簽的腳本示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
PHP寫的簡(jiǎn)單數(shù)字驗(yàn)證碼實(shí)例
下面小編就為大家?guī)硪黄狿HP寫的簡(jiǎn)單數(shù)字驗(yàn)證碼實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Laravel 創(chuàng)建指定表 migrate的例子
今天小編就為大家分享一篇Laravel 創(chuàng)建指定表 migrate的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
laravel csrf排除路由,禁止,關(guān)閉指定路由的例子
今天小編就為大家分享一篇laravel csrf排除路由,禁止,關(guān)閉指定路由的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
微信網(wǎng)頁授權(quán)(OAuth2.0) PHP 源碼簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了微信網(wǎng)頁授權(quán)(OAuth2.0) PHP 源碼簡(jiǎn)單實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Laravel框架實(shí)現(xiàn)發(fā)送短信驗(yàn)證功能代碼
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)發(fā)送短信驗(yàn)證的相關(guān)資料,非常錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06

