【问题标题】:Yajra Datatables and Entrust packageYajra 数据表和委托包
【发布时间】:2020-06-18 22:57:39
【问题描述】:
我正在使用带有 yajra 数据表的 Zizaco Entrust 包处理基于角色的权限。
当我向某些用户授予权限时,我也必须触摸数据表。
这是我的代码,
Controller.php
Datatables::of(User::where('company_id',$company_id)->get())
->addColumn('action', '@permission('user-edit')
<a href="{{route("users.show",$id)}}" class="btn btn-xs btn-info">View</a>@endrole
<a href="{{route("users.edit",$id)}}" class="btn btn-xs btn-primary">Edit</a>')
->make(true);
当我在数据表中使用权限时出现错误,任何人有想法解决这个问题??同样的问题
yajra datatables and entrust role permission laravel
【问题讨论】:
标签:
php
laravel
datatables
package
【解决方案1】:
Entrust::can() 检查用户是否登录,然后检查用户是否有权限。如果用户未登录,则返回也将为 false。
检查以下代码:
Datatables::of(User::where('company_id',$company_id)->get())
->addColumn('action', function($company){
$action = '';
if (!Entrust::can('user-edit')) {
$action = '<a href="' . route("users.show",$id) . '" class="btn btn-xs btn-info">View</a>';
}
$action .= '<a href="' . route("users.edit",$id) . '" class="btn btn-xs btn-primary">Edit</a>';
return $action;
})
->make(true);
对{{}} 和引号问题的代码进行了更正。
【解决方案2】:
你也可以遵循这个技巧
->addColumn('actions', function($admin) {
return view('admin.user.partials.admin_action', compact('admin'))->render();
})
并且在您的刀片 admin_action 中,您可以编写如下视图代码
@permission("admin-edit")
<a href="#" title="Edit"
class="btn-sm btn-primary editData"
data-id="{{ $admin->id }}"
data-fname="{{ $admin->f_name }}"
data-lname="{{ $admin->l_name }}"
data-email="{{ $admin->email }}"
data-redeem_manager="{{ $admin->redeem_manager }}"
data-mobile="{{ $admin->mobile }}"
data-role_id="{{ $admin->role_id }}"
><i class="fa fa-edit"></i> </a>
@endpermission
【解决方案3】:
Entrust::can() 不与我合作会导致错误。
但是 \Auth::user()->can('user-edit') 很适合我
return datatables()->of($data)
->addColumn('actions', function ($data) {
$button = '<a class="btn btn-sm btn-info" href="' . route('users.show', $data->id) . '" >Show <i class="fa fa-eye"></i></a>';
if (\Auth::user()->can('user-edit')) {
$button .= ' <a class="btn btn-sm btn-primary" href="' . route('users.edit', $data->id) . '" >Edit <i class="fa fa-edit"></i></a>';
}
if (\Auth::user()->can('user-delete')) {
$button .= ' <a id="' . $data->id . '" class="delete btn btn-sm btn-danger" href="#" >Delete <i class="fa fa-trash"></i></a>';
}
return $button;
})
->rawColumns(['actions'])
->make(true);