В моем приложении Laravel 5.7 я хочу использовать пользовательские директивы Blade и передавать массив в этой директиве, поскольку возможен другой доступ, например:
@loggedUserHasAccess([USER_ACCESS_ADMIN])
<div class="col">
<a class="social-inner" href="{{ route('admin.dashboard') }}" >
<span class="icon"></span><span>Backend</span>
</a>
</div>
@endLoggedUserHasAccess
И в app / Providers / AppServiceProvider.php:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
...
\Blade::directive('loggedUserHasAccess', function (array $accessArray) {
$condition = false;
if (Auth::check()) {
$loggedUser = Auth::user();
$usersGroups = User::getUsersGroupsByUserId($loggedUser->id, false);
foreach ($usersGroups as $next_key => $nextUsersGroup) {
if (in_array($nextUsersGroup->group_id, $accessArray)) {
$condition = true;
}
}
}
return "<?php if ($condition) { ?>";
});
Blade::directive('endLoggedUserHasAccess', function () {
return "<?php } ?>";
});
Но я получил синтаксическую ошибку: https://imgur.com/a/I5s1TmQ
USER_ACCESS_ADMIN определен в bootstrap / app.php.похоже, мой синтаксис недействителен, но какой действителен?
Спасибо!