Blade基础语法及include的使用
模板中输出PHP变量
比如在app/Http/StudentController.php控制器的方法中,定义两个变量,并传入视图:
public function section1()
{
$name = 'wubin';
$arr = ['wubin', 'work'];
return view('student.section1', [
'name' => $name,
'arr' => $arr
]);
}
父视图模板resources/views/layouts.blade.php中:
<div class="content">
@yield('content', '主要内容区')
</div>
子视图模板resources/views/student/section1.blade.php:
@section('content')
content
<p>{{ $name }}</p>
// 后续测试代码都会写在此处
@stop
使用{{ $变量 }} 输出php中的变量。
模板中调用php代码
<p>{{ time() }}</p>
<p>{{ date('Y-m-d H:i:s', time()) }}</p>
<p>{{ in_array($name, $arr) ? 'true' : 'false' }}</p>
<p>{{ var_dump($arr) }} </p>
<p> {{ isset($name) ? $name : 'default' }} </p>
<p> {{ $dd or '模板中isset短语法有输出$name没有输出这里的值' }} </p>
直接在花括号中使用php方法即可。输出结果依次如下:
wubin
1625038271
2021-06-30 07:31:11
true
array(2) { [0]=> string(5) "wubin" [1]=> string(4) "work" }
wubin
模板中isset短语法有输出$name没有输出这里的值
特别注意:通常我们判断变量是否定义使用isset()方法,在模板语法中,可以使用短语法替代:
{{ isset($name) ? $name : '$name不存在时的默认值' }}
等价于
{{ $name or '$name不存在时的默认值' }}
原样输出{{}}中的代码
只需要在花括号外加@即可:
<p>@{{ $name }}</p>
在页面中仅仅会输出 : {{ $name }}
不会对$name进行编译
模板中的注释
在模板中可以使用两种注释:
- HTML注释
<!-- html中的注释,当模板编译后,可以在浏览器中看到 -->
- blade模板注释
{{-- 模板中的注释,仅仅在模板文件中可见,编译后不可见 --}}
注意:在blade的注释中,不要使用@extends()等关键词,在编译时会报错
{{-- @extends是.. --}} 错误
{{-- @ extends是.. --}} 可以
{{-- @-extends是.. --}} 可以
include引入子视图
比如,在resources/views/student/下新建一个公用的视图文件common1.blade.php:
<p>我是include {{ $mes or '没有传递值' }}</p>
那么在其他的模板中该如何调用呢?很简单:
// 仅仅引入视图
@include('student/common1')
// 向视图变量传递值
@include('student/common1', ['mes' => '传递的值'])