zoukankan      html  css  js  c++  java
  • Laravel5.1 Blade模板

    在laravel框架中提供了的一个模板引擎,它就是Blade。

    Blade 并不限制你在视图(view)中使用原生 PHP 代码。所有 Blade 视图页面都将被编译成原生 PHP 代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译,这就意味着 Blade 基本上不会给你的应用增加任何额外负担。Blade 视图文件使用 .blade.php 文件扩展名,并且一般被存放在 resourcesviews 目录。

    模板的继承

    我们先在resourcesviews目录下创建一个app.blade.php文件写一些HTML

    <!DOCTYPE html>
    <html>
        <head>
            <title>Alex DK</title>
        </head>
    
        <body>
            <div class="container">
                @yield('content')
            </div>
        </body>
    </html>

    这是一个主模板,我们可以继承它 @yield关键字代表一个可插入的内容,我们在写一个home.blade.php就会明白这其中的关系:

    @extends('app')
    @section('content')
        <h1>这是我们的第一个模板页面</h1>
    @stop

    @extends关键字代表我们将继承一个模板,这样省去了很多重复代码编写的麻烦~,上面我们在app.blade.php中声明了一个@yield 可插入内容块儿,这样我们就可以在home.blade.php中使用@section关键字来插入内容了,@section对应着@stop。

    为了检验结果 我们注册一个路由来看看:

    Route::get('/home', function (){
        return view('home');
    });

    展示数据

    让我们先编写一个路由:

    Route::get('/home', function (){
        // 如果要向页面传递变量 只需要多添加一个数组参数就可以。注意:我们要渲染的blade不需要写home.blade.php  只需要写home就行了 不用写后面的后缀。
        return view('home',['name'=>'DK']);
    });

    对应的,我们修改home.blade.php:

    @extends('app')
    @section('content')
        <h1>Hi {{ $name }}</h1>
    @stop

    注意: Blade 中的 {{ }} 表达式的返回值将被自动传递给 PHP 的 htmlentities函数进行处理,以防止 XSS 攻击。

    很多JavaScript框架也使用花括号来解析一些东西,为了解决冲突可以使用'@{{}}'。

    {{  }}不止可以输出传递过来的变量,还可以这样:{{ time() }} 输出PHP函数的返回值。

    如果没有传递变量怎么办?

    当我们解析一个不存在的变量就会报错,那么怎么办呢,你可以这样写:

    {{ isset($name) ? $name : 'Default' }}

    但是这样写太繁琐了,你可以在Blade中这样写,简单明了:

    {{ $name or 'Alex' }}

    注意:如果你想输出的数据不想被解析,可以使用{!! $any !!}

    if表达式

    我们可以使用一些关键字来实现流程控制:

    • @if
    • @else
    • @elseif
    • @endif
    Route::get('/home/{score}', function ($score){
        return view('home',compact('score'));
    });
    @extends('app')
    @section('content')
        @if($score>=85)
            <p>你的数学成绩是优秀</p>
        @elseif($score>=60 && $score<85)
            <p>你的数学成绩是良好</p>
        @else
            <p>你的数学成绩没有及格</p>
        @endif
    @stop

    循环

    Blade有这几种循环:

    • @for      @endfor                     :  写法和PHP中一样
    • @foreach   @endforeach              :  最常用
    • @forelse  @empty  @endforelse   :  如果循环到空值是 进入@empty块  
    • @while      @endwhile                 :  while循环
    @for ($i = 0; $i < 10; $i++)
        The current value is {{ $i }}
    @endfor
    
    @foreach ($users as $user)
        <p>This is user {{ $user->id }}</p>
    @endforeach
    
    @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'])
  • 相关阅读:
    js文字跳动效果
    js文字效果
    centos7安装Logwatch配合msmtp邮件客户端发送服务器监控分析日志
    子查询
    Hexo添加字数统计、阅读时长
    基于visual Studio2013解决C语言竞赛题之0523魔方阵
    基于visual Studio2013解决C语言竞赛题之0522和为素
    基于visual Studio2013解决C语言竞赛题之0521圆盘求和
    基于visual Studio2013解决C语言竞赛题之0520相邻元素
    基于visual Studio2013解决C语言竞赛题之0519最大值
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6431423.html
Copyright © 2011-2022 走看看