Laravel - есть ли какая-нибудь директива blade, чтобы проверить, существует ли переменная и имеет ли она определенное значение? - PullRequest
1 голос
/ 23 июня 2019

Лезвие Laravel предоставляет много директив, но есть ли у него ярлык для проверки, существует ли переменная и имеет ли она определенное значение?

Сейчас я делаю что-то вроде этого: -

 @if(isset($request['optional_columns']['reason']) && ($request['optional_columns']['reason'] === "true")
    // Do something ...
 @endif

Шаблон сейчас выглядит очень грязно, я хотел бы использовать что-то, что выглядит аккуратно и чисто.

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Отвечая на мой вопрос: Я решил проблему, создав собственную директиву blade-сервера.

Создал пользовательского поставщика услуг, а затем определил мою собственную директиву blade-сервера следующим образом:

    use Illuminate\Support\Facades\Blade;

    class BladeServiceProvider extends ServiceProvider {

            public function register() {

            }

            public function boot() {

                Blade::directive('existsandsetto', function ($expression) {
                    list($var, $value) = explode(',', $expression);
                    $var = trim($var);
                    $value = trim($value);
                    return "<?php if(isset($var) && $var === $value) : ?>";
                });

                Blade::directive('endexistsandsetto', function ($expression) {
                    return '<?php endif; ?>';
                });
            }
        }

Использование в шаблоне Blade:

@existsandsetto($foo, 'bar')
  // $foo exists and is set to 'bar' 
@endexistsandsetto
  • Не забудьте зарегистрировать провайдера нестандартных услуг.
1 голос
/ 23 июня 2019

Вы можете вложить вашу директиву @if в директиву @isset .

@isset($request['optional_columns']['reason'])
  @if ($request['optional_columns']['reason'] === 'true')
    // Do something
  @endif
@endisset

Или вы можете определить пользовательскую директиву лезвия :

Blade::if('setTrue', function($var) {
  return isset($var) && $var === 'true';
});
@setTrue($request['optional_columns']['reason'])
  // Do something
@endsetTrue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...