Blade流程控制
if语句
比如在app/Http/Controllers/StudentController.php控制器中(以下均在此控制器中做操作,简称控制器),向模板中注册变量:
$student = Student::get();
$name = 'wubin';
$arr = ['wubin', 'work'];
return view('student.section1', [
'name' => $name,
'arr' => $arr,
'student' => $student
]);
在resources/student/section1.blade.php模板文件中:
@if ($name == 'wubin')
输出武斌
@elseif($name == 'work')
输出工作
@else
我是谁
@endif
@if根据$name中的值做出判断,决定应该输出那种情况。结果:输出武斌
在if中使用PHP函数
@if(in_array($name, $arr))
true
@else
false
@endif
判断$name是否在$arr中,是的话浏览器打印true。
unless
作用:可以理解为if的取反。比如:
@unless($name == 'wubin')
当$name等于wubin的时候 什么也不输出
只有$name!= wubin的时候才会输出
@endunless
因为$name的值是'wubin',所以上面的unless语句可以理解为if($name =='wubin')的取反,因为unless中的条件判断成立,所以unless什么也不会输出,当unless中的条件判断不成立的时候,才会输出;
// 比如在控制器中,修改$name的值
$name = 'wubin.work';
@unless($name == 'wubin')
因为$name == wubin 不成立了,所以unless中的内容会输出
@endunless
for和foreach、forelse
for
@for($i = 0; $i < 10; $i++)
<p>{{$i}}</p>
@endfor
依次输出0-9。
foreach
作用:foreach 用于输出数组和对象
在(一)的控制器中,我们使用ORM的get方法获取到了所有学生的信息:
然后我们使用foreach遍历得到每个学生的名字(因为得到的是一个对象,所以需要使用->得到属性值):
@foreach($student as $studentItem)
<p>{{ $studentItem->name }}</p>
@endforeach
forelse
作用:如果数组有数据就遍历出来没有执行empty中的逻辑。
比如修改控制器中的$student为一个空数组:
$student = [];
然后在模板文件中:
@forelse($student as $studentItem)
{{-- 当$student中有数据的时候,执行这里的内容 --}}
<p>{{ $studentItem->name }}</p>
@empty
{{-- empty就是$student数组或者对象中数据为空的情况才执行 --}}
<p>null</p>
@endforelse
最终结果:显示Null,因为$student中没有数据,所以执行empty中的逻辑。