=
GridView::widget([
'dataProvider' => $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']]);
?>
=
GridView::widget([
...
])
?>
===== 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 ====
= Html::beginForm(['/rekrutacja-kandydaci/mail-to'], 'post'); ?>
= Html::dropDownList('action', '', ['' => 'Z zaznaczonymi: ', 'm' => 'Wyślij e-mail'],
['class'=> 'dropdown',]) ?>
= Html::submitButton('Wykonaj', ['class' => 'btn btn-success btn-sm',]); ?>
=
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
...
'columns' => [
...
[
'class' => '\kartik\grid\CheckboxColumn'
],
...
?>
= Html::endForm(); ?>
==== 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 '';
}
}
],