Пользовательская директива Blade Laravel выдает ошибку, если используется оператор - PullRequest
1 голос
/ 17 марта 2020

У меня есть этот фрагмент кода в загрузке моего RoleServiceProvider:

public function boot()
{
    Blade::directive('role', function ($role) {

        $hasRole = User::find(Auth::id())->hasRole($role);

        return "<?php if ( $hasRole  ) : ?>";
    });

    Blade::directive('endrole', function ($role) {
       return "<?php endif; ?>";
    });
}

Переменная $ hasRole содержит статус: true / false, теперь я мой блейд:

@role('user-manager')
    hello
@endrole

Выглядит нормально для меня, но выдает эту ошибку:

Синтаксическая ошибка Facade \ Ignition \ Exceptions \ ViewException, неожиданная ')' (Просмотр: C: \ wamp64 \ www\laravel6 \ packages \ users \ management \ src \ View \ Overview.blade. php)

По какой-то причине я не знаю, как мне выглядит код .. Некоторые предложения?

1 Ответ

1 голос
/ 17 марта 2020

Попробуйте вместо этого использовать директиву if.

Blade::if('role', function ($role) {
    return User::find(Auth::id())->hasRole($role);
});

В Blade:

@role('user-manager')
  hello
@endrole

Кроме того, вы можете получить объект пользователя прямо из Auth, например так:

return Auth::user()->hasRole($role);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...