2017-02-24 80 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

谢谢!有效! –