블레이드 템플릿에서 스위치를 사용하려면 어떻게 해야 합니까?사용 시:
@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;
} ?>