如何仅在满足数据库列条件时在数据表列按钮下拉菜单中显示链接



如果新用户至少没有登录一次应用程序,我正在尝试隐藏数据表按钮下拉菜单中的"resend_welcome"链接。我的用户表上有一列"login_count"列,默认为零。用户登录其帐户后,会增加他们签入的每次次数。我正在尝试向数据表按钮边栏选项卡添加一个if_statement,但似乎无法构造一个正确使用 $row->id 仅在下拉列表中隐藏链接的按钮,仅供那些尚未登录的用户使用。

我正在尝试构建 if 语句,如果"login_count"等于零,则显示链接,否则链接将被隐藏。我的问题是我似乎找不到将 if 语句条件与数据库行 ID 连接的正确方法。 (我还有一个默认为 null 的"last_login_at"日期列,如果出于某种原因最好在 null 选项而不是计数等于零选项的日期上构建条件)

我的按钮动作刀片:

@can($gateKey.'view')
<div class="pull-right" style="white-space: nowrap; min-width: 80px;"><div class="btn-group" style="white-space: nowrap;">
<a href="{{ route($routeKey.'.show', $row->id) }}" class="btn btn-sm btn-default">@lang('global.app_view')</a>
<a class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" href="#">
<span class="caret"></span>
</a><ul class="dropdown-menu pull-right">
{{-- This is the Link I want to build the if-statement around    --}}
<li><a href="{{route('admin.users.resend_welcome',$row->id)}}" >@lang('global.app_resend_welcome_letter')</a></li>
@if(auth()->user()->role->contains(1))
<li><a href="{{route('admin.impersonate.impersonate',$row->id)}}" >@lang('global.app_troubleshoot_user')</a></li>
@endif
@can($gateKey.'edit')
<li><a href="{{ route($routeKey.'.edit', $row->id) }}">@lang('global.app_edit')</a></li>
@endcan
@can($gateKey.'delete')
<li>
{!! Form::open(array(
'style' => 'display: inline-block;',
'method' => 'DELETE',
'onsubmit' => "return confirm('".trans("global.app_are_you_sure_delete")."');",
'route' => [$routeKey.'.destroy', $row->id])) !!}
{!! Form::submit(trans('global.app_delete'), array('class' => 'btn btn-link')) !!}
{!! Form::close() !!}
</li>
@endcan
</ul>
</div>
</div>
@endcan

这是我的index.blade的Ajax数据表部分:

<script>
@can('user_delete')
@if ( request('show_deleted') != 1 )window.route_mass_crud_entries_destroy = '{{ route('admin.users.mass_destroy') }}'; @endif
@endcan
$(document).ready(function () {
window.dtDefaultOptions.ajax = '{!! route('admin.users.index') !!}?show_deleted={{ request('show_deleted') }}';
window.dtDefaultOptions.stateSave = true;
//window.dtDefaultOptions.scrollY = '50vh';
window.dtDefaultOptions.scrollCollapse = true;
window.dtDefaultOptions.columns = [@can('user_delete')
@if ( request('show_deleted') != 1 )
{data: 'massDelete', name: 'id', searchable: false, sortable: false},
@endif
@endcan{data: 'name', name: 'name'},
{data: 'email', name: 'email'},
{data: 'phone', name: 'phone'},
{data: 'role.title', name: 'role.title'},
@if(auth()->user()->role->contains(1))
{data: 'team.name', name: 'team.name'},
@endif
{data: 'last_login_at', name: 'last_login_at'},
{data: 'login_count', name: 'login_count'},
//This is where the Button action ties into the datatables table
{data: 'actions', name: 'actions', searchable: false, sortable: false}
];
processAjaxTables();
});
</script>

这是我要求的控制器:

public function index()
{
if (! Gate::allows('user_access')) {
return abort(401, 'Sorry you are not authorized for this action at this time');
}
if ($filterBy = Input::get('filter')) {
if ($filterBy == 'all') {
Session::put('User.filter', 'all');
} elseif ($filterBy == 'my') {
Session::put('User.filter', 'my');
}
}

if (request()->ajax()) {
$query = User::query();
$query->with("role");
$query->with("team");
$query->with("created_by");
$query->with("created_by_team");
$template = 'usersActionsTemplate';
if(request('show_deleted') == 1) {
if (!Gate::allows('interest_delete')) {
return abort(401, 'Sorry you are not authorized for this action at this time');
}
$query->onlyTrashed();
$template = 'restoreTemplate';
}

$query->select([
'users.id',
'users.name',
'users.email',
'users.phone',
'users.password',
'users.team_id',
'users.remember_token',
//                'users.created_by_id',
'users.last_login_at',
'users.login_count',
//                'users.created_by_team_id',
]);
$table = Datatables::of($query);
$table->setRowAttr([
'data-entry-id' => '{{$id}}',
]);
$table->addColumn('massDelete', '&nbsp;');
$table->addColumn('actions', '&nbsp;');
$table->editColumn('actions', function ($row) use ($template) {
$gateKey  = 'user_';
$routeKey = 'admin.users';
return view($template, compact('row', 'gateKey', 'routeKey'));
});
$table->editColumn('phone', function ($row) {
return $row->phone ? $row->phone : '';
});
$table->editColumn('password', function ($row) {
return '---';
});
$table->editColumn('role.title', function ($row) {
if(count($row->role) == 0) {
return '';
}
return '<span class="label label-default label-many">' . implode('</span><span class="label label-info label-many"> ',
$row->role->pluck('title')->toArray()) . '</span>';
});
$table->editColumn('team.name', function ($row) {
return $row->team ? $row->team->name : '';
});
$table->editColumn('remember_token', function ($row) {
return $row->remember_token ? $row->remember_token : '';
});
$table->editColumn('last_login_at', function ($row) {
return $row->last_login_at ? $row->last_login_at : '';
});
$table->editColumn('login_count', function ($row) {
return $row->login_count ? $row->login_count : '';
});
//            $table->editColumn('created_by.name', function ($row) {
//                return $row->created_by ? $row->created_by->name : '';
//            });
//            $table->editColumn('created_by_team.name', function ($row) {
//                return $row->created_by_team ? $row->created_by_team->name : '';
//            });
$table->rawColumns(['actions','massDelete','role.title']);
return $table->make(true);
}
return view('admin.users.index');

我可以按角色或活动用户调节此按钮链接,但无论出于何种原因,我似乎都找不到一种基于数据库 $row->id 来调节此链接的方法。

有什么想法吗?

系统说这条评论要长在评论部分添加,所以我会把它添加到帖子中。

在这种情况下,@if(Auth::user()->login_count > 1)的作用是影响直流用户。它不会将条件应用于数据表索引中显示的用户记录。如果当前用户有login_count则它将隐藏所有不同显示的用户记录行按钮的链接,无论这些用户记录是否具有任何用户计数。

我需要它,以便在所有不同用户的表索引列表中,过去登录过的那些用户将不会在其行按钮下拉菜单中显示链接,但任何从未登录过的用户都将在其行按钮下拉菜单中可见"resend_welcome"链接。

只需更改视图文件,添加条件即可。喜欢

@if($row->login_count < 1)
<li><a href="{{route('admin.users.resend_welcome',$row->id)}}" >@lang('global.app_resend_welcome_letter')</a></li>
@endif

相关内容

  • 没有找到相关文章