К сожалению, из коробки ларавел не поддерживает конструкцию типа 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