2017-02-24 65 views
1
$query =Cms::find(); 
    $dataProvider = new ActiveDataProvider([ 
    'query' => $query , 
    ]); 

嗨,我試圖隱藏其'Status_id'設置爲'非活動',這是使用我已創建的操作列中的自定義操作按鈕完成的某些行。我想我可以做到這一點,如果我可以在$ dataprovider中添加我自己的查詢,但我也不知道該怎麼做。請幫助,如果這是正確的方式,如果不是我該怎麼做呢?在此先感謝。這裏是我的小工具。如何從GridView的條件隱藏行?

echo GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 

    'columns' => [ 
     'Contract_id', 
     'Status_id', 
      ['header' => 'Actions', 
      'class' => 'yii\grid\ActionColumn', 
      'template' => '{new_action}', 
      'buttons' => [ 
       'new_action' => function ($url) { 
        return Html::a('<span class="glyphicon glyphicon-fire"></span>', $url, [ 
           'title' => Yii::t('app', 'Burn Contract'), 
           'data-confirm' => Yii::t('yii', 'Are you sure you want to burn this contract?'), 
           'data-method' => 'post', 'data-pjax' => '0', 
        ]); 
       } 
      ], 'urlCreator' => function ($action, $model) { 
       if ($action === 'new_action') { 
        $url = Url::to(['cms/burn', 'id' => $model->Contract_id]); 
        return $url; 
       } 
      } 
     ], 
    ], 
]); 

回答

1

我認爲這可能工作:

echo GridView::widget([ 
'dataProvider' => $dataProvider, 
'filterModel' => $searchModel, 

'columns' => [ 
    'Contract_id', 
    'Status_id', 
     ['header' => 'Actions', 
     'class' => 'yii\grid\ActionColumn', 
     'template' => '{new_action}', 
     'buttons' => [ 
      'new_action' => function ($url) { 
       return Html::a('<span class="glyphicon glyphicon-fire"></span>', $url, [ 
          'title' => Yii::t('app', 'Burn Contract'), 
          'data-confirm' => Yii::t('yii', 'Are you sure you want to burn this contract?'), 
          'data-method' => 'post', 'data-pjax' => '0', 
       ]); 
      } 
     ], 'urlCreator' => function ($action, $model) { 
      if ($action === 'new_action') { 
       $url = Url::to(['cms/burn', 'id' => $model->Contract_id,'burn'=>true]); 
       return $url; 
      } 
     } 
    ], 
], 
]); 

控制器:

$query =Cms::find(); 
if (\Yii::$app->request->post('burn')) 
{ 
    $query->where(['<>','Status_id', 'Inactive']); 
} 
$dataProvider = new ActiveDataProvider([ 
    'query' => $query 
]); 
+0

謝謝!有效! –