Я пытаюсь скрыть ссылку "resend_welcome" в раскрывающемся меню кнопки datatables, если новый пользователь не выполнил вход в приложение хотя бы один раз. У меня есть столбец "login_count" в моей таблице пользователей, по умолчанию он равен нулю. Как только пользователь входит в свою учетную запись, он увеличивает количество раз, которое он зарегистрировал. Я пытаюсь добавить if_statement к блейду кнопки datatables, но не могу создать тот, который правильно использует $ row-> id для скрыть ссылку в выпадающем списке только для тех пользователей, которые еще не вошли в систему.
Я пытаюсь построить оператор if таким образом, чтобы, если "login_count" равнялся нулю, ссылка отображалась, в противном случае ссылка скрыта. Моя проблема в том, что я не могу найти правильный способ связать условный оператор if с идентификаторами строк базы данных. (У меня также есть столбец даты «last_login_at», который по умолчанию имеет значение null, если по какой-то причине лучше построить условное выражение на дату, где нулевой параметр, а не счетчик, равен нулю)
Моя кнопка action.blade:
@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
Это часть данных Ajax моего index.blade:
<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', ' ');
$table->addColumn('actions', ' ');
$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)
делает в этой ситуации, так это влияет на пользователя с постоянным током. Он не применяет условие к пользовательским записям, отображаемым в индексе datatables. Если текущий пользователь имеет login_count, он скрывает ссылку для всех различных отображаемых кнопок строк пользовательских записей независимо от того, имеют ли эти пользовательские записи какое-либо количество пользователей.
Мне нужно, чтобы в списке индексов таблиц всех различных пользователей те пользователи, которые вошли в систему в прошлом, не будут иметь ссылку, отображаемую в раскрывающемся меню кнопки строк, но любой пользователь, который никогда не входил в систему. у всех будет отображаться ссылка "resend_welcome" в выпадающем меню кнопки строк.