Yii2のGridViewで、CheckboxColumnにデフォルトでチェックを付ける方法

Yii2でGridViewを使うとき、以下のようにすると各行にチェックボックスを表示させることができます。

 

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yiigridCheckboxColumn']

],

〜〜〜

 

この各行のチェックボックスのうち、特定のチェックボックスにあらかじめチェックを入れておく方法です。

 

まず、チェックしておきたい行のkeyを配列に入れておきます。通常はコントローラーから渡すことになると思いますが、今回はサンプルなのでGridViewの直前でセットしてしまいます。

 

$selection = [2100, 2200];

 

このあと、GridViewを以下のように変更します。

 

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
    ['class' => 'yiigridCheckboxColumn',
      'checkboxOptions' => function($model,$key,$index) use ($selection) {
      $bool = false;
        if (in_array($key, $selection)) {
          $bool = true;
        }
      return ['checked'=>$bool, 'id'=>$key];

   }
  ],

〜〜〜〜

 $key というのが、GridViewの1行を特定するキーなので、これが $selection という配列の中に存在するかどうかをチェックして、存在すれば 'checked' に true が入るようにしています。

 

簡単な例でしたが、ご参考になれば幸いです。