在我的 Laravel 10.x 应用程序中,我使用的是 Yajra-Laravel Datatable ajax 版本。我想根据应用程序的特定要求隐藏或显示操作按钮。例如,如果休假申请已获得批准,那么我想从所有休假列表中隐藏“编辑”按钮。
我看到所有按钮都可以在:
resources/views/partials/datatablesActions.blade.php
文件中使用,如下所示:
@can($viewGate)
<a class="btn btn-xs btn-primary" href="{{ route('admin.' . $crudRoutePart . '.show', $row->id) }}">
{{ trans('global.view') }}
</a>
@endcan
@can($editGate)
<a class="btn btn-xs btn-info" href="{{ route('admin.' . $crudRoutePart . '.edit', $row->id) }}">
{{ trans('global.edit') }}
</a>
@endcan
@can($deleteGate)
<form action="{{ route('admin.' . $crudRoutePart . '.destroy', $row->id) }}" method="POST" onsubmit="return confirm('{{ trans('global.areYouSure') }}');" style="display: inline-block;">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="submit" class="btn btn-xs btn-danger" value="{{ trans('global.delete') }}">
</form>
@endcan
在控制器中我有以下内容:
$table->editColumn('actions', function ($row) {
$viewGate = 'leave_show';
$editGate = 'leave_edit';
$deleteGate = 'leave_delete';
$crudRoutePart = 'leaves';
return view('partials.datatablesActions', compact(
'viewGate',
'editGate',
'deleteGate',
'crudRoutePart',
'row'
));
});
有人可以帮助我,我如何传递一些逻辑来根据要求显示/隐藏特定按钮?
要在 $row 中包含状态条件,例如
approved
或 not approved
,我们可以在视图模板中设置一个条件,如下所示:
@can($editGate)
@unless($row->status === 'approved')
<a class="btn btn-xs btn-info" href="{{ route('admin.' . $crudRoutePart . '.edit', $row->id) }}">
{{ trans('global.edit') }}
</a>
@endunless
@endcan