К сожалению, из коробки ларавел не поддерживает конструкцию типа switch. Хочется написать так:
@switch($value)
@case(1)
<p>Первый вариант<p>
@break
@case(2)
<p>Второй вариант<p>
@break
@default
<p>Дефолтное значение<p>
@break
@endswitch
,но это работать не будет.
Мы имеем возможность расширять функционал шаблонизатора Blade, и для того, чтобы вышеуказанная конструкция заработала, вставляем в файл app/Providers/AppServiceProvider.php в метод boot() следующий код:
Blade::extend(function($value, $compiler)
{
$value = preg_replace('/(?<=\s)@switch\((.*)\)(\s*)@case\((.*)\)(?=\s)/', '<?php switch($1):$2case $3: ?>', $value);
$value = preg_replace('/(?<=\s)@endswitch(?=\s)/', '<?php endswitch; ?>', $value);
$value = preg_replace('/(?<=\s)@case\((.*)\)(?=\s)/', '<?php case $1: ?>', $value);
$value = preg_replace('/(?<=\s)@default(?=\s)/', '<?php default: ?>', $value);
$value = preg_replace('/(?<=\s)@break(?=\s)/', '<?php break; ?>', $value);
return $value;
});
Теперь мы можем в любых своих шаблонах blade применять конструкцию switch case