使用 Yajra Laravel 数据表时如何根据特定条件显示“查看、编辑、删除”按钮?

问题描述 投票:0回答:1

在我的 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'
    ));
});

有人可以帮助我,我如何传递一些逻辑来根据要求显示/隐藏特定按钮?

laravel yajra-datatable
1个回答
0
投票

要在 $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
© www.soinside.com 2019 - 2024. All rights reserved.