簡體   English   中英

如何在 GridView Yii2 中創建條件

[英]How to make condition inside GridView Yii2

我這里有問題。
我想在GridView添加一個條件

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'table_column1',
        'table_column2',
        //CONDITION HERE
        if(condition){
            //BUTTON HERE
        } else {
            //TOOLS COLUMN HERE
        }
    ],
]); ?>

我怎樣才能做到這一點?

如果您只想根據指定條件顯示/隱藏某些列,則可以使用$visible屬性:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'table_column1',
        'table_column2',
        [
            'name' => 'some_column1',
            'visible' => $condition,
        ],
        [
            'name' => 'some_column2',
            'visible' => !$condition,
        ],
    ],
]); ?>

根據$condition ,只有兩列( some_column1some_column1 )中的一列是可見的。

如果您需要兩個 gridview 一個替代另一個的簡單方法是基於備用 $column 內容

if ( condition) {

    $columns  = [
        ['class' => 'yii\grid\SerialColumn'],
        'table_column1',
        'table_column2',
          [
            'attribute'=>'your_att',
            'header'=>'your_header',
            'format'=>'raw',    
            'value' => function($model, $key, $index)
            {   
                    return '<button class="btn green">Y</button>';
            },
        ],
        ],

    } else {
        $columns  = [
        ['class' => 'yii\grid\SerialColumn'],
        'table_column1',
        'table_column2',
         ['class' => 'yii\grid\ActionColumn',
        ],
    }
}

echo GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => $columns
]); ?>

否則使用原始列類型的值函數,您可以返回每個特定行所需的代碼..

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        //'id',
        'event_id',
        //'img:ntext',
        //'path:ntext',
        //'type',
        //'description:ntext',
        [
            'attribute' => 'type',
            'value'=> function($data){
                if($data->type == 0){
                    $info = 'Empty';
                }
                if($data->type == 1){
                    $info = 'One';
                }
                if($data->type == 2){
                    $info = 'Two';
                }
                return $info;
            },
            'format'=>'html',
        ],
        
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>
 [
            'class' => 'kartik\grid\EditableColumn',
            'attribute' => 'status',
            'label'=>'Status',
             'filterType' => \kartik\grid\GridView::FILTER_SELECT2,
                'filter' => ArrayHelper::map(\app\models\PropertyStatus::find()->all(), 'status', 'status'),
                'filterWidgetOptions' => [
                    'theme' => Select2::THEME_BOOTSTRAP,
                    'pluginOptions' => [
                        'allowClear' => true,
                    ],
                ],
                'filterInputOptions' => ['placeholder' => 'All...'],
                'format'=>'raw',
            //'options' => ['style' => 'width: 8%'],

            'editableOptions'=> function ($model, $key, $index, $widget) {
                if(Yii::$app->user->can('property/status')){
                    $appttypes = ArrayHelper::map(\app\models\PropertyStatus::find()->all(), 'status', 'status');
                    return [
                    'header' => 'Status',
                    'attribute' => 'status',
                    'asPopover' => false,
                    'inlineSettings' => [
                        'closeButton' => '<button class="btn btn-sm btn-danger kv-editable-close kv-editable-submit" title="Cancel Edit"><i class="fa fa-times-circle"></i></button>'
                    ],

                    'type' => 'primary',
                    //'size'=> 'lg',
                    'size' => 'md',
                    'options' => ['class'=>'form-control', 'placeholder'=>'Enter person name...'],
                    'inputType' => Editable::INPUT_DROPDOWN_LIST,
                    'displayValueConfig' => $appttypes,
                    'data' => $appttypes,
                    'formOptions'=> ['action' => ['/ajax/update-property-status']] // point to new action
                ];
                }
            },

        ],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM