Laravel—视图、Blade模板引擎
视图
视图包含应用的HTML代码,视图文件存放在resource/views目录  
访问视图
view辅助函数能够返回视图,第一个参数为views目录下的文件名称,第二个参数可选,是一个包含在视图中有用的数据,若存在子目录,使用.来引用
Route::get('/',function()
{
    return view('welcome',['name'=>'xiaoming']);
});
View门面上的exists方法用于判断是否存在视图
View::exists(‘emails.customer)
传递数据到视图
两种方法:
return view(‘welcome’,[‘name’=>’xiaoming’]);
$view = $view(‘welcome’)->with(‘name’,’xiaoming’);
在视图之间共享数据
在AppServiceProvider中或生成独立的服务提供者中添加视图门面的share方法,就可以在所有视图中共享数据
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     * 
     * 启动所有应用服务
     *
     * @return void
     */
    public function boot()
    {
        View::share('key','value');
       
    }
    /**
     * Register any application services.
     * 注册服务提供者
     * 
     * @return void
     */
    public function register()
    {
        //
    }
}
Blade模板引擎
Blade视图文件使用.blade.php文件拓展并存放在resources/views目录下  
数据显示
传入Blade视图的数据可以使用两个花括号包括变量来显示传递到视图的数据(即在HTML代码中使用PHP变量的方式)
{{$name}}  
在HTML中使用的所有PHP代码,都可以用这种方式来使用:
 {{time()}}  
显示存在的数据/设置默认值
两种方法:
{{isset($name)?$name:'Default'}}  
{{$name or 'Default'}}  
显示原生代码/未转义的数据
如果要输出带HTML的文本,则应该使用显示原生代码,否则会直接把HTML代码显示出来
{!$name!}  
显示子视图
@include指令允许在一个视图中包含另一个视图,即子视图继承父视图,还可以传递额外的参数到被子视图
@include(‘view.name’,[‘some’=>’data])
模板继承
@extends指令能够指定视图继承另外一个视图
在HTML代码中,用@section,@show包围的代码区域,可以继承的子视图中进行重新定义,用@yield标记单标签,可以在继承的视图里面直接定义该位置的值
继承的子视图在@section('name')、@endsection之间指定替换内容,若在替换内容前加上@parent则便是添加内容
代码后面不用加;
<!-- index.blade.php -->
<html>
    <head>
        <!-- 指定标记名1 -->
        <title>@yield('title')</title>
    </head>
    <body>
        <!-- 要指定这部分的标记名2 -->
        @section('body') 
        <!-- 把这部分的内容包围起来 -->
        @show
    </body>
</html>
<!-- extends.blade.php -->
@extends('index.php')
<!-- 重写titile,即单标签1 -->
@section('title','Larevel')
<!-- 重写标签块2 -->
@section('body')
  @parent
  <!-- 这里时替换的内容 在前面加上@parent则表示追加 --> 
@endsection
路程控制
if语句
可以在视图中使用@if,@elseif,@else,@endif来构造if语句,使用方式和PHP相同
Blade模板还提供@unless指令,表示除非
此外还有@isset、``@empty`指令
@unless
...
@endunless
@empty
...
@endempty
Switch语句
@switch($i)
    @case(1)
       //...
       @break
    @case(2)
       //
       @break
    @default 
       //
@endswitch
循环
@for ($i = 0;$i < 10; $i++)
    //...
@endfor
@foreach ($users as $user)
    //...
@endforeach
@forelse ($users as $user)
   //...
@endforelse
@while()
   //...
@endwhile
还可以在@php、@endphp之间直接执行一段PHP代码