Laravel 5의 스위치(블레이드)

블레이드 템플릿에서 스위치를 사용하려면 어떻게 해야 합니까?사용 시:

@switch($login_error)
@case(1)
`E-mail` input is empty!
@break
@case(2)
`Password` input is empty!
@break @endswitch 

결과적으로 나는 이 텍스트를 평문으로 본다.if를 사용할 때보다 더 깨끗하기 때문에 몇 가지 코드로 스위치를 사용하는 것을 선호합니다.

하지만 불가능하면 그냥 쓰세요.



질문에 대한 답변



2020년 답변 갱신

Laravel 5.5 이후 블레이드에는 @switch가 내장되어 있습니다.아래와 같이 사용합니다.

@switch($login_error)
@case(1)
<span> `E-mail` input is empty!</span>
@break
@case(2)
<span>`Password` input is empty!</span>
@break
@default
<span>Something went wrong, please try again</span> @endswitch 

오래된 답변

안타깝게도 Laravel Blade에는 switch 문이 없습니다.그 외의 어프로치에서는 Laravel을 사용하거나 플레인 PHP 스위치를 사용할 수 있습니다.블레이드 템플릿에서는 다른 PHP 애플리케이션과 마찬가지로 플레인 PHP를 사용할 수 있습니다.Laravel 5.2 이후부터는 @php 문을 사용합니다.

옵션 1:

@if ($login_error == 1)
`E-mail` input is empty! @elseif ($login_error == 2)
`Password` input is empty! @endif 



AppServiceProvider 클래스의 부트 메서드에 이러한 코드를 추가할 수 있습니다.

Blade::extend(function($value, $compiler){
$value = preg_replace('/(s*)@switch((.*))(?=s)/', '$1<?php switch($2):', $value);
$value = preg_replace('/(s*)@endswitch(?=s)/', '$1endswitch; ?>', $value);
$value = preg_replace('/(s*)@case((.*))(?=s)/', '$1case $2: ?>', $value);
$value = preg_replace('/(?<=s)@default(?=s)/', 'default: ?>', $value);
$value = preg_replace('/(?<=s)@breakswitch(?=s)/', '<?php break;', $value);
return $value;
}); 

다음과 같이 사용할 수 있습니다.

@switch( $item )
@case( condition_1 )
// do something
@breakswitch
@case( condition_2 )
// do something else
@breakswitch
@default
// do default behaviour
@breakswitch @endswitch 

즐기세요~




LARAVEL 5.2 이상:

PHP 문을 여는 것과 닫는 것 사이에 평소 코드를 쓰세요.

@php switch (x) {
case 1:
//code to be executed
break;
default:
//code to be executed } @endphp 



현재 Laravel 5.5 https://laravel.com/docs/5.5/blade#switch-statements에서 구축되었습니다.https://laravel.com/docs/5.5/blade#switch-statements




Laravel 5.1에서는 다음 기능이 블레이드로 동작합니다.

<?php
switch( $machine->disposal ) {
case 'DISPO': echo 'Send to Property Disposition'; break;
case 'UNIT':
echo 'Send to Unit'; break;
case 'CASCADE': echo 'Cascade the machine'; break;
case 'TBD':
echo 'To Be Determined (TBD)'; break;
} ?>