在laravel框架中,在视图文件中使用PHP代码使用到了Blade 模板引擎,Blade 是 laravel 提供的一个简单强大的模板引擎。它不像其他流行的 PHP 模板引擎那样限制你在视图中使用原生的 PHP 代码,事实上它就是把 Blade 视图编译成原生的 PHP 代码并缓存起来。缓存会在 Blade 视图改变时而改变,这意味着 Blade 并没有给你的应用添加编译的负担。Blade 视图文件使用 .blade.php 后缀,一般情况下都被存储在 resources/views 目录

注意:使用blade模板引擎时视图文件的后缀名必须是.blade.php,如果你的视图文件后缀名是.php的话,这样就无法使用blade模板引擎

一:输出PHP变量

{{ $name }}
{{ date('Y-m-d H:i:s',time()) }}
{{ in_array($name,$arr)?'true':'false' }}
{ isset($name)?$name:'default' }}
{{ $name or 'default' }}

二:显示未转义数据

默认的,Blade {{}} 声明会自动的使用 PHP 的 htmlentities 方法来避免 XSS 攻击。如果你不想你的数据被转义,你可以使用下面的语法

{!! $name !!}
注意:当你在应用中输出用户输入的数据时应该非常的谨慎,你应该总是使用 {{}} 来转义内容中任意的 HTML 实体

三:if语句

@if ($name == 'hello')
    hello
@elseif($name == 'yes')
    yes
@else
    who
@endif

为了方便,Blade 也提供了 @unless 指令:

@unless($name)
    {{$name}}
@endunless

@unless()就可以理解为 if( ! ),就是if not

四:循环语句

@foreach($student as $val)
  {{ $val->name }}
@endforeach

@for ($i = 0; $i < 10; $i++)
  The current value is {{ $i }}
@endfor

@forelse ($users as $user)
  <li>{{ $user->name }}</li>
@empty
  <p>No users</p>
@endforelse

@while (true)
  <p>I'm looping forever.</p>
@endwhile

五:包含子视图

你可以使用 @include 指令来包含一个视图的内容,当前视图中的变量也会被共享给子视图

<div>
  @include('shared.errors')
  <form>
  <!-- Form Contents -->
  </form>
</div>

尽管子视图会自动继承父视图中的所有数据变量,你也可以直接传递一个数组变量来添加额外的变量到子视图

@include('view.name', ['some' => 'data'])

huaweichenai
673 声望114 粉丝