====== GridView (Bootstrap4)====== ---- ===== Konfiguracja ===== $dataProvider, 'filterModel' => $searchModel, 'tableOptions' => ['class' => 'table table-bordered table-hover table-sm'], 'responsive' => true, 'hover' => true, 'pjax' => true, 'bordered' => true, 'striped' => true, 'condensed' => true, 'toolbar' => [ ['content' => Html::a(' Dodaj użytkownika', ['create-form'], ['class' => 'btn btn-success']) ], '{export}', '{toggleData}', ], 'exportConfig' => [ GridView::CSV => ['label' => 'Export do CSV', 'filename' => 'Uzytkownicy_' . date('Y-m-d')], GridView::EXCEL => ['label' => 'Export do EXCEL', 'filename' => 'Uzytkownicy_' . date('Y-m-d')], ], 'panel' => [ 'type' => GridView::TYPE_INFO, 'heading' => 'Lista użytkowników', ], 'columns' => [] ]) ?> ===== Konfiguracja kolumn ===== 'headerOptions' => ['style' => 'width:10%'], 'contentOptions' => ['class' => 'text-wrap'], ===== Przesyłanie parametrów fitrowania metodą POST ===== Controller $dataProvider = $searchModel->search(Yii::$app->request->post()); Widok 'some-id-you-like', 'timeout' => false, 'enablePushState' => false, 'clientOptions' => ['method' => 'POST']]); ?> ===== ExpandRowColumn ===== ==== Ikony ==== Zamiana standardowych ikon rozwijania i zwijania wiersza 'expandIcon' => '', 'collapseIcon' => '', 'expandIcon' => '', 'collapseIcon' => '', ===== Expand column ===== [ 'class' => '\kartik\grid\ExpandRowColumn', 'expandIcon' => '', 'collapseIcon' => '', 'value' => function ($model, $key, $index, $column) { $session = Yii::$app->session; if ($session->has('expand_wiedza') && $model->id == $session['expand_wiedza']) { return GridView::ROW_EXPANDED; } else { return GridView::ROW_COLLAPSED; } }, 'detailUrl' => Yii::$app->request->getBaseUrl() . '/wiedza-dziedziny/view', 'detailRowCssClass' => 'bg-light m-2', ], W kontrolerze public function actionView() { $id = Yii::$app->request->post('expandRowKey'); $session = Yii::$app->session; $session['expand_wiedza'] = $id; $model = WiedzaDziedzinaNauka::find() ->where(['id_wiedza_dziedziny' => $id]) ->all(); return $this->renderAjax('view', [ 'model' => $model, 'id_wiedza_dziedziny' => $id ]); } Kolor tła wiersza i jego rozwinięcia registerCss(" .tlo_view{ background-color:#f5f5f0 } "); $this->registerJs(<< ===== JavaScript - Expand column ===== var grid = $('#studenci'); grid.on('kvexprow:toggle', function (event, ind, key, extra, state) { if(state == false){ $.get('/konfig/del-sesja?n=expand_studenci'); } }); Function wywoływana jest przy każdym rozwinięciu lub zwinięciu wiersza. state = 1 - rozwinięto, state = 0 =- zwinięto Stan rozwinięcia zapamiętuję w sesji (patrz wyżej) a jeśli zwinięto usuwam tą sesję. ===== Kolumna wyboru (check) ===== ==== Widok ====
'Z zaznaczonymi: ', 'm' => 'Wyślij e-mail'], ['class'=> 'dropdown',]) ?> 'btn btn-success btn-sm',]); ?>
$dataProvider, 'filterModel' => $searchModel, ... 'columns' => [ ... [ 'class' => '\kartik\grid\CheckboxColumn' ], ... ?>
==== W kontrolerze ==== public function actionMailTo(){ $post = Yii::$app->request->post('selection'); foreach($post as $id){ .... } } ==== Filtrowanie danych ==== Wyszukiwanie po początkowych znakach modelSearch ->andFilterWhere(['like', 'nazwisko', $this->nazwisko.'%',false]) ===== Własna kolumna akcji ===== ==== Przycisk delete ==== Własna kolumna akcji z przyciskiem delete.\\ Jeżeli dany element jest używany relacyjnie w innych tabelach z regułą RESTRICT, przycisk delete nie pojawia się.\\ Patrz: [[baza_danych#sprawdzenie_czy_rekord_mozna_usunac|Sprawdzanie czy relacje pozwalają na usunięcie]]\\ Ze względów bezpieczeństwa parametr id przekazywany jest do akcji delete metodą post.\\ Operacja wymaga potwierdzenia.\\ Patrz: [[alert#okno_informacji_potwierdzenia|Potwierdzanie usunięcia]] ['attribute' => 'akcje', 'format' => 'raw', 'label'=>false, 'headerOptions' => ['style' => 'width:5%'], 'value' => function($model) { if (Pomocnik::checkDelete('tytuly', $model->id)) { return Html::a('', ['tytuly/delete', 'id' => $model->id], ['class' => 'btn btn-outline-danger btn-sm', 'title' => 'Usuń tytuł', 'data' => [ 'method' => 'post', params' => ['id' => $model->id] ], 'data-confirm' => 'Na pewno usunąć tytuł: ' . $model->nazwa . '?
(Operacja nieodwracalna !)' ]); } else { return ''; } } ],