Wie kann ich Schalter in Blade-Vorlagen verwenden? Als ich verwendet habe:
@switch($login_error)
@case(1)
`E-mail` input is empty!
@break
@case(2)
`Password` input is empty!
@break
@endswitch
im Ergebnis sehe ich diesen Text als Klartext. Ich ziehe es vor, switch in wenigen Codestücken zu verwenden, weil es für mich sauberer ist als wenn ich if verwende.
Aber wenn es nicht möglich ist, schreib es einfach.
@ventaquil Die ausgewählte Antwort ist falsch. Kann die Antwort auf die von mir gepostete geändert werden?
– kapitänschwarz
24. November 2016 um 10:38 Uhr
@captainblack Entschuldigung, aber diese Lösung ist für Laravel 5.2+ – wir verwenden 5.1 LTS.
– Bauchspeicheldrüse
1. Dezember 2016 um 8:05 Uhr
laravel 5.5 führt switch-Anweisungen ein. Ihr Code sollte richtig gerendert werden.
– szaman
31. August 2017 um 11:56 Uhr
Margus Pala
Aktualisierte Antwort 2020
Seit Laravel 5.5 ist der @switch im Blade eingebaut. Verwenden Sie es wie unten gezeigt.
@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
Ältere Antwort
Leider hat Laravel Blade keine Switch-Anweisung. Sie können Laravel verwenden, wenn Sie sich sonst nähern oder den einfachen PHP-Switch verwenden. Sie können einfaches PHP in Blade-Vorlagen wie in jeder anderen PHP-Anwendung verwenden. Ab Laravel 5.2 und höher verwenden Sie die @php-Anweisung.
Option 1:
@if ($login_error == 1)
`E-mail` input is empty!
@elseif ($login_error == 2)
`Password` input is empty!
@endif
Deutschland
Sie können diesen Code einfach in der Startmethode der AppServiceProvider-Klasse hinzufügen.
@switch( $item )
@case( condition_1 )
// do something
@breakswitch
@case( condition_2 )
// do something else
@breakswitch
@default
// do default behaviour
@breakswitch
@endswitch
Genießen Sie es ~
Das funktioniert nicht. parse error, expecting "Endschalter (T_ENDSWITCH)"' oder "case (T_CASE)"' or “Standard (T_DEFAULT)”.
– mkmnstr
26. Februar 2016 um 23:50 Uhr
@mkmnstr, Versuchen Sie, ` ‘ ` in der Methode preg_replace durch ` ” ` zu ersetzen?
– Deutschland
27. Februar 2016 um 6:26 Uhr
Hat jemand seit diesen Kommentaren upvoted? Funktioniert das?
– Jonathan
10. November 2016 um 10:52 Uhr
Mit Laravel 5.4 funktioniert es bei mir nicht. FatalThrowableError Klasse „App\Providers\Blade“ nicht gefunden
– Kyle Challis
8. August 2017 um 23:15 Uhr
Unter 5.5 funktioniert es. Ich wäre nur neugierig, wie ich es mit der automatischen Vervollständigung von phpstorm (oder einer beliebigen IDE) @Germey zum Laufen bringen kann?
– Michael Villeneuve
23. Oktober 2017 um 2:20 Uhr
IN LARAVEL 5.2 UND HÖHER:
Schreiben Sie Ihren üblichen Code zwischen die öffnenden und schließenden PHP-Anweisungen.
@php
switch (x) {
case 1:
//code to be executed
break;
default:
//code to be executed
}
@endphp
<?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;
}
?>
Apokryfos
Sie können die Klinge wie folgt verlängern:
Blade::directive('switch', function ($expression) {
return "<?php switch($expression): ?>";
});
Blade::directive('case', function ($expression) {
return "<?php case $expression: ?>";
});
Blade::directive('break', function () {
return "<?php break; ?>";
});
Blade::directive('default', function () {
return "<?php default: ?>";
});
Blade::directive('endswitch', function () {
return "<?php endswitch; ?>";
});
Sie können dann Folgendes verwenden:
@switch($test)
@case(1)
Words
@break
@case(2)
Other Words
@break
@default
Default words
@endswitch
Wenn sich zwischen switch(): und dem ersten Fall ein Leerzeichen befindet, schlägt der gesamte Codeblock fehl. Das ist eher eine PHP-Beschränkung als eine Blade-Beschränkung. Sie können es möglicherweise umgehen, indem Sie die normale Syntax erzwingen, z.
Blade::directive('switch', function ($expression) {
return "<?php switch($expression) { ?>";
});
Blade::directive('endswitch', function ($) {
return "<?php } ?>";
});
Aber das fühlt sich ein bisschen falsch an.
Michael Kiari
Es ist ein bisschen off-topic, aber aus irgendeinem Grund, wenn die ‘Fälle’ Zeichenfolgen sind, werden doppelte Anführungszeichen als solche verwendet @case("foo") nicht wie erwartet funktioniert, falls Sie ein solches Problem haben, einfache Anführungszeichen scheinen zu funktionieren, also statt @case("foo") verwenden @case('foo'). Vielleicht kann jemand mit mehr Informationen etwas Licht ins Dunkel bringen.
Grüße.
13535000cookie-checkSchalten Sie Laravel 5 – Blade einyes
github.com/laravel/framework/issues/1857
– ceejayoz
27. April 2015 um 13:49 Uhr
@ventaquil Die ausgewählte Antwort ist falsch. Kann die Antwort auf die von mir gepostete geändert werden?
– kapitänschwarz
24. November 2016 um 10:38 Uhr
@captainblack Entschuldigung, aber diese Lösung ist für Laravel 5.2+ – wir verwenden 5.1 LTS.
– Bauchspeicheldrüse
1. Dezember 2016 um 8:05 Uhr
laravel 5.5 führt switch-Anweisungen ein. Ihr Code sollte richtig gerendert werden.
– szaman
31. August 2017 um 11:56 Uhr