定制 ichsanmust/yii2-grid 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ichsanmust/yii2-grid

Composer 安装命令:

composer require ichsanmust/yii2-grid

包简介

Extension grid view (yii2-grid-select)

README 文档

README

Extensions ini diperuntukan untuk kebutuhan select data multiple di grid view yii2 dengan memakai checkbox. permasalahan yang ada, jika kita memakai 'class' => 'yii\grid\CheckboxColumn' dari yii, ada kekurangan, dimana saat kita telah melakukan select data, dan kita melakukan searching, filtering, sorting, paging (pjax request), data selected yang sebelumnya menjadi hilang, dengan extension ini, dapat memperbaiki kekurangan tersebut. semoga bermanfaat...

Installation

Disarankan Install melalui composer composer. jalan kan perintah

php composer.phar require --prefer-dist ichsanmust/yii2-grid "@dev"

atau tambahkan

"ichsanmust/yii2-grid": "@dev"

di require section file composer.json . lalu jalan kan composer update

Install From the Archive

Download the latest release dari sini realeses., dan extract di project. di config aplikasi , tambakan aliases dan path untuk extension ini.

... return [

'aliases' => [
    '@ichsanmust/grid' => 'path/to/your/extracted',
    // contoh: '@ichsanmust/grid' => '@app/extensions/ichsanmust/yii2-grid',
    
]

]; ...

Contoh Penggunaan

// controller

public function actionIndex()
    {
        $searchModel = new ProductSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

// view

<?php
use yii\helpers\Html;
use yii\grid\GridView;

$this->title = 'Products';
$this->params['breadcrumbs'][] = $this->title;
?>

<script>
	// tambahkan ini untuk inisiasi
	var listChecked = [];
</script>

<?php
	\yii\widgets\Pjax::begin([  // agar content nya di request secara ajax, maka harus pake widgets pjax
		'id'=>'pjax-product-gridview',
		'enablePushState'=>false,
		'timeout'=>100000,
	]); 
?>

<script>
	// jika parent dari halaman ini merupakan pjax, (pagination)  jika bukan, bisa tidak dipakai
	$("ul.pagination li a").on("click", function(e) {
		var $this = $(this);
		var hrefData = $this.attr("href");

		$.pjax.reload({
			container: "#pjax-product-gridview",
			timeout: 100000,
			url: hrefData,
			push: false,
			replace: false,
			scrollTo: false,
		}).done(function() {
		});
		return false;
	});

	// jika parent dari halaman ini merupakan pjax, (sorting)  jika bukan, bisa tidak dipakai
	$('table thead th a').on("click", function(e) {
		var $this = $(this);
		var hrefData = $this.attr("href");

		$.pjax.reload({
			container: "#pjax-product-gridview",
			timeout: 100000,
			url: hrefData,
			push: false,
			replace: false,
			scrollTo: false,
		}).done(function() {
		});
		return false;
	});
</script>

<?= GridView::widget([
	'id'=>'crud-gridview-ichsanmust',
	'dataProvider' => $dataProvider,
	'filterModel' => $searchModel,
	'columns' => [
		['class' => 'yii\grid\SerialColumn'],

		[   
				'_pjax' =>'pjax-product-gridview',
				'class' => 'ichsanmust\grid\CheckboxColumnSelectTools',  // class select nya memakai ini
				'name'=>'choose', // nama untuk checkbox
				'uniqueValue'=>'id_product', // value unique yang akan di select
				//'valueInit'=> array(3,2), // value data selected saat inisiasi gridview
				/*'valueInitSingle'=> function ($model, $key, $index, $column) { // value data selected per single data
						if($model->STATUS == 3){ 
							return true;
						}else{
							return false;
						} 
					},
				*/
				//'disabledCheckboxOnValue' =>true, // saat valueInit ada datanya, checkbox yang ter select akan di disabled
				//'checkedCheckboxOnValue' => true, // saat valueInit ada datanya, checkbox yang ter select akan di checked
					
				
		],
		'id_product',
		'product_name',
		'id_product_category',
		'stok',
		
		['class' => 'yii\grid\ActionColumn'],
	],
]); ?>
<?php \yii\widgets\Pjax::end();   // agar content nya di request secara ajax, maka harus pake widgets pjax ?>

<?php
$this->registerJs(
	   '
		$("#pjax-product-gridview").on("pjax:send", function() { // beforeSend
				$("#loader").show();
		})
		$("#pjax-product-gridview").on("pjax:complete", function() { // complete
			retainCheckedSingle(); // ini harus di deklarasikan 
			setCheckedChooseAll(); // ini harus di deklarasikan 
			$("#loader").hide();
		})
		'
	);
?>
			
<a id ="getSelected" class ="btn btn-success" > Get Selected Value </a>
<a id ="clearSelected" class ="btn btn-success" > clear Selected Value </a>
<a id ="addSelected" class ="btn btn-success" > add Selected 3 and 2 </a>

<?php
$this->registerJs(
	   '
		jQuery(document).on("click","#getSelected",function(e){
			console.log(getListChecked()); // ini yang di olah
			alert(getListChecked()); // ini yang di olah
			return false;
		});
		jQuery(document).on("click","#clearSelected",function(e){
			removeAll();
			return false;
		});
		jQuery(document).on("click","#addSelected",function(e){
			var arrayData =["3","2"];
			addSelected(arrayData);
			return false;
		});
		'
	);


?>


atau bisa seperti ini 

<a id="getSelectedonclick" onclick="getCheckboxData()" class="btn btn-main"> get data </a>

<script>
	function getCheckboxData() {
		console.log(getListChecked()); // ini yang di olah
		alert(getListChecked()); // ini yang di olah
		return false;
	}
</script>

catatan

untuk yang bermasalah mengenai pjax yang tidak terdeteksi di Jquery Versi 3 ke atas, silahkan pake extensions ini pjax3

统计信息

  • 总下载量: 115
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2018-07-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固