ven*_*uil 72 php switch-statement laravel blade laravel-5
如何在刀片模板中使用switch?我用的时候:
@switch($login_error)
@case(1)
`E-mail` input is empty!
@break
@case(2)
`Password` input is empty!
@break
@endswitch
Run Code Online (Sandbox Code Playgroud)
结果我将此文本视为明文.我更喜欢在几段代码中使用switch,因为它比我使用if时更干净.
但如果不可能只写它.
Mar*_*ala 111
更新2019答案
从Laravel 5.5开始,@ switch就内置于Blade中.使用它如下所示.
@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
Run Code Online (Sandbox Code Playgroud)
较旧的答案
不幸的是,Laravel Blade没有switch语句.您可以使用Laravel if else方法或使用普通的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
Run Code Online (Sandbox Code Playgroud)
小智 29
您只需在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;
});
Run Code Online (Sandbox Code Playgroud)
然后你可以用作:
@switch( $item )
@case( condition_1 )
// do something
@breakswitch
@case( condition_2 )
// do something else
@breakswitch
@default
// do default behaviour
@breakswitch
@endswitch
Run Code Online (Sandbox Code Playgroud)
享受吧〜
cap*_*ack 22
在LARAVEL 5.2及以上:
在开始和结束PHP语句之间编写常用代码.
@php
switch (x) {
case 1:
//code to be executed
break;
default:
//code to be executed
}
@endphp
Run Code Online (Sandbox Code Playgroud)
小智 5
在Laravel 5.1中,这适用于Blade:
<?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;
}
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
90585 次 |
最近记录: |