
Create IF and SWITCH Statements With Blade
if and switch statements. Blade directives are just shortcuts for implementing PHP code. You can even create your own Blade Directives, and we’ll look at that much later. For now, let’s focus on the built in ones: @if and @switch.Read the previous article on Displaying Data in Blade Files.
@if Directive
As mentioned above, blade directives replicate actual PHP code. The regular PHP way of writing an if statement is:
<?php
if ($something == true) {
// Do something here
}
elseif and else statements that pair up with the if statement.<?php
if ($something == "This Value") {
// Do something here
} elseif ($something == "Other Value") {
// Do something else
} else {
// Do something if everything fails
}
Blade has directives for those as well: @elseif directive and @else directive. Let’s start with the @if directive.
What we’ll build is a page that displays the GT-R’s horsepower based on the year that’s entered.
Route::get('/car-if-directive/{year}', function($year) {
return view('if-directive/gtr-if', [
'year' => $year,
]);
});
GT-R Horsepower ranges as follows:
- 1969–1973:
160hp - 1989–2002:
280hp - 2007–2009:
480hp - 2010:
485hp - 2011–2012:
530hp - 2013–2016:
545hp - 2017–2022:
565hp
Let’s write it out with our @if directive in our resources/views/if-directive/gtr-if.blade.php.
<body class="p-6">
The {{ $year }} GT-R has:
@if($year >= 1969 && $year <= 1973)
160hp
@endif
</body>
That displays the first year. We do need to add an @endif directive to complete the if statement.
We can now just add more if statements to complete the full list.
<body class="p-6">
The {{ $year }} GT-R has:
@if($year >= 1969 && $year <= 1973)
160hp
@endif
@if($year >= 1989 && $year <= 2002)
280hp
@endif
@if($year >= 2007 && $year <= 2009)
480hp
@endif
@if($year == 2010)
485hp
@endif
@if($year >= 2011 && $year <= 2012)
530hp
@endif
@if($year >= 2013 && $year <= 2016)
545hp
@endif
@if($year >= 2017 && $year <= 2022)
565hp
@endif
</body>
If we visit our route and send a year, like http://localhost/car-if-directive/2019, we get the following result: The 2019 GT-R has: 565hp. Let’s make this cleaner. Too many @if and @endif directives. We’ll do this with the @elseif directive.
<body class="p-6">
The {{ $year }} GT-R has:
@if($year >= 1969 && $year <= 1973)
160hp
@elseif($year >= 1989 && $year <= 2002)
280hp
@elseif($year >= 2007 && $year <= 2009)
480hp
@elseif($year == 2010)
485hp
@elseif($year >= 2011 && $year <= 2012)
530hp
@elseif($year >= 2013 && $year <= 2016)
545hp
@elseif($year >= 2017 && $year <= 2022)
565hp
@endif
</body>
That’s much better. There’s only one thing that we’re missing, and that’s what happens when a user enters a year that’s outside of the ranges. We need the @else directive at the end.
<body class="p-6">
The {{ $year }} GT-R has:
@if($year >= 1969 && $year <= 1973)
160hp
@elseif($year >= 1989 && $year <= 2002)
280hp
@elseif($year >= 2007 && $year <= 2009)
480hp
@elseif($year == 2010)
485hp
@elseif($year >= 2011 && $year <= 2012)
530hp
@elseif($year >= 2013 && $year <= 2016)
545hp
@elseif($year >= 2017 && $year <= 2022)
565hp
@else
No Information Found
@endif
</body>
@switch Directive
Doesn’t this example look like it should be rolled up into a switch statement? I’m glad you thought so too. A typical switch statement looks like this:
<?php
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo "i is outside of bounds";
}
Blade has directives for everything that we need to reconstruct our switch statement. It comes with @switch, @case, @break, @default, and @endswitch directives. You’ll quickly see that each directive needs to be closed, which is why we have @endswitch. In PHP, we do that with curly braces.
@switch($i)
@case(0)
i equals 0
@break
@case(1)
i equals 1
@break
@case(2)
i equals 2
@break
@default
Default case
@endswitch
To replicate our if/elseif/else example above is straightforward with Blade.
<body class="p-6">
The {{ $year }} GT-R has:
@switch($year)
@case($year >= 1969 && $year <= 1973)
160hp
@break
@case($year >= 1989 && $year <= 2002)
280hp
@break
@case($year >= 2007 && $year <= 2009)
480hp
@break
@case($year == 2010)
485hp
@break
@case($year >= 2011 && $year <= 2012)
530hp
@break
@case($year >= 2013 && $year <= 2016)
545hp
@break
@case($year >= 2017 && $year <= 2022)
565hp
@break
@default
No Information Found
@endswitch
</body>
Laravel Series
Continue your Laravel Learning.
Discussing Blade Directives
Laravel – P9: Displaying Data In Blade
What we really wanted to achieve was introduce what Blade is, understand that there are Blade Directives. These directives make our lives easier and not PHP.
Create IF and SWITCH Statements With Blade
Laravel – P10: Blade With IF and SWITCH Directives
Displaying data is one thing, but Blade has directives such as PHP’s if and switch statements. Blade directives are just shortcuts for implementing PHP code.
How Do You Loop With Blade Directives?
Loops can look quite messy with PHP when they’re embedded inside of HTML. Blade makes them look nice, almost like they belong there.


