example delete custom column actioncolumn yii2

delete - yii2 gridview custom column



Ocultar Yii2 GridView botones de acción (10)

Quiero ocultar los botones de la columna de acción Yii2 GridView en la base del estado del campo del modelo. Si el estado es = 1, entonces oculte solo el botón de vista. ¿Como puedo?

Código:

[ ''class'' => ''yii/grid/ActionColumn'', ''contentOptions'' => [''style'' => ''width:260px;''], ''header''=>''Actions'', ''template'' => ''{view} {delete}'', ''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 =''/jobs/view?id=''.$model->jobid; return $url; } ],


En yii2 use return Url::to([''controler/action'']);

en total

[ ''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'']); } } ],

Estoy usando la extensión kartik pero funciona bien con yii


Esto es lo que he hecho https://github.com/Mihai-P/yii2theme-brain/blob/master/widgets/ActionColumn.php en resumen, extendí la clase ActionColumn y uso la mía en lugar de la predeterminada. mi clase tiene más elementos, como verificar los privilegios de acceso y mostrar solo los botones a los que tienen acceso, puede ignorar esa parte y simplemente usar la forma de verificar la forma de verificar el modelo. Considero esto más reutilizable que escribir código en la vista. Si comienza a escribir código en la vista, deberá escribir el mismo código una y otra vez para cada pantalla.

Estoy seguro de que también puede hacer lo que quiera dentro de la vista, intente usar

''template'' => function ($model) { ............. }

Y devuelve ''{view} {delete}'' o ''{delete}''


Necesitas cambiar solo una línea.

Reemplazar:

''template'' => ''{update} {delete}'',

Con:

''template'' => function($model){ return ($model->status==1)?''{update} {delete}'':''{view} {update} {delete}''; },


Puede usar [''class'' => ActionColumn::className(),''template''=>''{view} {update}'' ] en su vista de cuadrícula.


Se puede hacer así.

[ ''class'' => ''yii/grid/ActionColumn'', ''contentOptions'' => [], ''header''=>''Actions'', ''template'' => ''{view} {update} {delete}'', ''visibleButtons''=>[ ''view''=> function($model){ return $model->status!=1; }, ] ],


Su trabajo para mí:

''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'', ]) : ''''; },

es lo mismo que: return $ model-> status == ''''? ''show_action_here'': ''no_show'';


Use la propiedad visibleButtons de la clase ActionColumn:

[ ''class'' => ''yii/grid/ActionColumn'', ''visibleButtons'' => [ ''view'' => function ($model, $key, $index) { return $model->status === 1 ? false : true; } ] ]

Consulte http://www.yiiframework.com/doc-2.0/yii-grid-actioncolumn.html# $ visibleButtons-detail


este funciono para mi código ActionColumn completo

[ ''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; } } ],


necesitas agregar la propiedad de la plantilla (''template'' => ''{update} {delete}'') a la columna de arry donde pones las opciones

''columns'' => [ [''class'' => ''yii/grid/SerialColumn''], ''id'', ''otherfield'' [''class'' => ''yii/grid/ActionColumn'',''template''=>''{update} {delete}''],


github.com/yiisoft/yii2/blob/…

Solo agrega

return $model->status == 1 ? Html::a(''<span class="fa fa-search"></span>View'', $url, [ ''title'' => Yii::t(''app'', ''View''), ''class'' =>''btn btn-primary btn-xs'', ]) : '''';