隐藏Yii2 GridView操作按钮
我想根据模型字段状态隐藏Yii2 GridView操作列按钮。 如果状态为=1,则仅隐藏视图按钮。 我怎么能 代码:隐藏Yii2 GridView操作按钮,yii2,Yii2,我想根据模型字段状态隐藏Yii2 GridView操作列按钮。 如果状态为=1,则仅隐藏视图按钮。 我怎么能 代码: [ 'class'=>'yii\grid\ActionColumn', “内容选项”=>[“样式”=>“宽度:260px;”], 'header'=>'Actions', '模板'=>'{view}{delete}', “按钮”=>[ //查看按钮 “查看”=>函数($url$model){ 返回Html::a('View',$url[ 'title'=>Yii::t('app'
[
'class'=>'yii\grid\ActionColumn',
“内容选项”=>[“样式”=>“宽度:260px;”],
'header'=>'Actions',
'模板'=>'{view}{delete}',
“按钮”=>[
//查看按钮
“查看”=>函数($url$model){
返回Html::a('View',$url[
'title'=>Yii::t('app','View'),
'class'=>'btn btn主btn xs',
]);
},
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action=='view'){
$url='/jobs/view?id='.$model->jobid;
返回$url;
}
],
简而言之,我扩展了ActionColumn类,并使用了我自己的类而不是默认类。
我的类中有更多的东西,比如检查访问权限,只显示他们可以访问的按钮,你可以忽略这个部分,只是使用检查方法来检查模型。我认为这是可重用的,然后在视图中编写代码。如果你开始在视图中编写代码,那么你必须编写相同的代码。在每个屏幕上重复
我相信您也可以在视图中执行您想要的操作,请尝试使用
'template' => function ($model) {
.............
}
并返回{view}{delete}或{delete}
加上
return$model->status==1
?Html::a('视图',$url,[
'title'=>Yii::t('app','View'),
'class'=>'btn btn主btn xs',
])
: '';
它对我有用:
'buttons' => [
'view' => function ($url, $model) {
return $model->status == '' ? Html::a('<span class="fa fa-paperclip fa-fw fa-border"></span>', $url, [
'title' => Yii::t('app', 'Visualizar'),
//'class'=>'btn btn-primary btn-xs',
]) : '';
},
“按钮”=>[
“查看”=>函数($url$model){
返回$model->status=''?Html::a('',$url[
'title'=>Yii::t('app','visualizer'),
//'class'=>'btn btn主btn xs',
]) : '';
},
与:return$model->status=''‘show_action_here':‘no_show’;在yii2中使用
return Url::to(['controller/action']);
总共
[
'class' => 'kartik\grid\ActionColumn',
'template' => '{today_action}',
'buttons' => [
'today_action' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-check"></span>', $url,
[
'title' => Yii::t('app', 'Change today\'s lists'),
]);
}
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'today_action') {
return Url::to(['customers/today']);
}
}
],
[
'class'=>'kartik\grid\ActionColumn',
'模板'=>'{today_action}',
“按钮”=>[
“今日行动”=>功能($url$model){
返回Html::a(“”,$url,
[
'title'=>Yii::t('app','Change today's list'),
]);
}
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action==='today\u action'){
返回Url::to(['customers/today']);
}
}
],
我使用的是kartik扩展,但与yii配合使用很好您可以使用
['class'=>ActionColumn::className(),'template'=>'{view}{update}']
在gridview上。使用
ActionColumn
类中的visibleButtons
属性:
[
'class' => 'yii\grid\ActionColumn',
'visibleButtons' => [
'view' => function ($model, $key, $index) {
return $model->status !== 1;
}
]
]
参考资料:这一条对我有效。完成ActionColumn代码
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => ['style' => 'width:260px;'],
'header'=>'Actions',
'template' => '{view}',
'buttons' => [
//view button
'view' => function ($url, $model) {
return Html::a('<span class="fa fa-search"></span>View', $url,
[ 'title' => Yii::t('app', 'View'), 'class'=>'btn btn-primary btn-xs', ]) ;
},
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'view') {
$url = \yii\helpers\Url::toRoute(['general-info/viewalldetails', 'id' => $key]);
return $url;
}
}
],
[
'class'=>'yii\grid\ActionColumn',
“内容选项”=>[“样式”=>“宽度:260px;”],
'header'=>'Actions',
'模板'=>'{view}',
“按钮”=>[
//查看按钮
“查看”=>函数($url$model){
返回Html::a('View',$url,
['title'=>Yii::t('app','View'),'class'=>btn-btn-primary-btn-xs',]);
},
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action=='view'){
$url=\yii\helpers\url::toRoute(['general-info/viewalldetails','id'=>$key]);
返回$url;
}
}
],
您需要将模板prociety('template'=>'{update}{delete}')添加到放置选项的列arry中
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'otherfield'
['class' => 'yii\grid\ActionColumn','template'=>'{update} {delete}'],
你只需要换一行 替换:
'template'=>'{update}{delete}',
可以这样做
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => [],
'header'=>'Actions',
'template' => '{view} {update} {delete}',
'visibleButtons'=>[
'view'=> function($model){
return $model->status!=1;
},
]
],
只需添加
return$model->status==1?Html::a('View',$url,['title'=>Yii::t('app','View'),'class'=>'btn-btn-primary-btn-xs',])):“”;
您的代码对我有用,谢谢您可以将您的评论更改为下面的答案吗?是的…与:return$model->status=''相同?“”?“”“:”否“;不知道visibleButtons数组-很好很干净。谢谢。非常感谢。在这里的所有答案中,它对我帮助最大!
[
'class' => 'yii\grid\ActionColumn',
'contentOptions' => [],
'header'=>'Actions',
'template' => '{view} {update} {delete}',
'visibleButtons'=>[
'view'=> function($model){
return $model->status!=1;
},
]
],