@evster-coder
учусь, кажется

Почему не регистрируется директива blade?

Пытаюсь сделать директиву blade, которая проверяла бы роль пользователя (является ли он админом). Все таблицы, связи, модельки вроде бы есть.
Чтобы не писать длинные конструкции во view типа (они то работают)
@if(auth()->check() && auth()->user()->hasRole('admin')):

решил сделать директиву role.

Создал RoleServiceProvider со следующим содержимым:
class RoleServiceProvider extends ServiceProvider
{
    public function boot() {
        /*Blade::directive('role', function ($role) {
            return "<?php if(auth()->check() && auth()->user()->hasRole({$role})): ?>";
        });
        Blade::directive('endrole', function ($role) {
            return "<?php endif; ?>";
        });*/

        Blade::if('role', function ($role) {
            return auth()->check() && auth()->user()->hasRole({$role});
        });
    }
}

Зарегистрировал его в config/app.php:
'providers' => [
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

        //добавляем новые service providers
        App\Providers\RoleServiceProvider::class,

Однако в такой простейшей конструкции
@extends('layouts.layout')
@section('title', 'Каталог')
@section('content')
  <main id="content">
      <div class="container">
        <div class="row">
          @role('admin')
            <p> admin </p>
          @else
            <p> not admin </p>
          @endrole
        </div>
      </div>
  </main>
@endsection

выдается ошибка на строке @else
ParseError
syntax error, unexpected 'else' (T_ELSE), expecting end of file (View: D:\labs\laravelSSPR\resources\views\catalog.blade.php)

Если уберу else, то окажется, что он просто пропускает эти директивы и напечатает мне на экране
@role('admin')
  <p> admin </p>
@endrole
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@evster-coder Автор вопроса
учусь, кажется
Дело было в том, настройки конфигурации были кэшированы, нужно было их почистить через php artisan config:clear
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы