Пользовательские директивы лезвия не работают - синтаксическая ошибка, неожиданная ')' - PullRequest
1 голос
/ 20 февраля 2020

Я пытаюсь создать директиву blade-сервера, которая проверяет, вошел ли пользователь и имеет ли активированная учетная запись. В нашей базе данных у нас есть столбец user_status с 0: в ожидании, 9 активными.

// AppServiceProvider. php

public function boot()
{
    Blade::directive('active', function () {
        $condition = false;

        // check if the user is authenticated
        if (Auth::check()) {
            // check if the user has a subscription
            if(auth()->user()->getStatus() == 9) {
                $condition = true;
            } else {
                $condition = false;
            }
        }

        return "<?php if ($condition) { ?>";
    });

    Blade::directive('inactive', function () {
        return "<?php } else { ?>";
    });

    Blade::directive('endactive', function () {
        return "<?php } ?>";
    });
}

// welcome.blade. php

@active
    <p>User is active</p>
@inactive
    <p>User is inactive</p>
@endactive

Я включил эту функцию getStatus () в моем User. php модель.

public function getStatus() {
    return $this->user_status;
}

Я также могу использовать Trait MustActivateAccount, который включает эту функцию:

/**
 * Determine if the user has activated account.
 *
 * @return bool
 */
public function hasActivatedAccount()
{
    return $this->user_status == 9;
}

Эта директива блейда при добавлении на страницу сообщает об этой ошибке:
Синтаксическая ошибка Facade \ Ignition \ Exceptions \ ViewException, неожиданная ')'

Не сбежала ли я правильно в файле AppServiceProvider. php и если да, то где и как?

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете попробовать это в своем шаблоне лезвия

@if(Auth()->user()->user_status == 9)
    <p>User is active</p>
@else
    <p>User is inactive</p>
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...