Laravel 5.1 Blade模板引擎

为什么要使用blade 它是干什么用的?

blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率。我们写blade的路径是 resources/view 下,它的文件名后缀是blade.php。


1 继承

继承是相当爽的,它可以从主模板继承所有代码,以免大量的代码重复。这样说比较片面,具体看眼代码吧。

1.1 模板继承拓展 代码片段

首先先创建一个 admin/layout.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Learn Laravel-- @yield(‘title‘)</title>
</head>
<body>
    @section(‘navibar‘)
        The master navigation bar
    @show

    <div class="container">
        @yield(‘content‘)
    </div>
</body>
</html>

然后创建 admin/home.blade.php 继承自layout:

@extends(‘admin.layout‘)
@section(‘title‘)
    Home
@endsection

@section(‘navibar‘)
    @parent
    <p>增加别的代码 不是完全覆盖</p>
@endsection

@section(‘content‘)
    <p>Content body</p>
@endsection

注册路由 实现控制器方法并展示

Route::group([‘prefix‘ => ‘admin‘, ‘namespace‘ => ‘Admin‘], function (){
    Route::resource(‘/‘, ‘HomeController‘);
});
    public function index()
    {
        return view(‘admin.home‘);
    }

总结: 好了 现在咱先看layout代码 它初始定义了一个HTML简单的模板,在需要拓展的地方都加上了@yield关键字 这代表可填充的一块儿代码片段区域,而@section(navi)是声明了一段片段 然后通过@show来展示。

然后我们创建了home文件,它可以继承自layout 通过@extends() 继承之后就可以使用@section填充layout中的@yield的了,一个yield对应着一个section,关于layout中的@section(navi) 在home中也进行了补充 因为使用了@parent关键字,代表着不覆盖父模板的代码片段 而是在父模板的代码片段最后追加代码,当然啦 如果你要是去掉@parent关键字就会覆盖掉。

如果这么说你还是不明白的话,打开编译器敲一遍 看看结果就清楚了。


1.2 引入一段代码

这也是blade相当强大的地方 当你写了一段HTML之后呢 发现其中有些内容在别的页面下重用率很高,你完全可以把它抽出来放在另一个blade中,然后每当你要使用这段代码时使用@include引入就行了。

首先我们先来创建一个 some.blade.php(至于放在哪里随你便) :

<p>这只是一个演示 所以不浪费时间写太多的HTML</p>

然后在home中引用它吧:

@extends(‘admin.layout‘)
@section(‘title‘)
    Home
@endsection

@section(‘navibar‘)
    @parent
    <p>增加别的代码 不是完全覆盖</p>
@endsection

@section(‘content‘)
    @include(‘admin.some‘)
    <p>Content body</p>
@endsection

2 数据展示

这段说说如何将数据传入到一个视图 然后将它展示到页面上。

2.1 数据传入

数据传入有两种种方法 先说第一种 数组方式:

    public function index()
    {
        $name = ‘K‘;
        return view(‘admin.home‘, compact(‘name‘));
        // 也可以这么写
//        return view(‘admin.home‘, [‘name‘ => $name]);
    }

第二种方法是with方法:

    public function index()
    {
        $name = ‘K‘;
        return view(‘admin.home‘)->with(‘name‘, $name);
    }

2.2 展示数据

第一种展示方法 {{ }},用双花括号括起来就可以展示传入blade模板的变量,在{{ }} 里是可以使用PHP代码的:

<p>用户:{{ $name }}</p>

第二种展示方法{!!  !!},它是不经过htmlentities函数处理的,所以说你传递的数据是html数据的话 可以使用这种方法:

return view(‘admin.home‘)->with(‘name‘, ‘<h1>K</h1>‘);
<p>用户:{!! $name !!}</p>

3 控制语句

blade模板为了最大化使代码简洁呢 它本身自带了很多控制语句 这跟咱学的PHP很类似,就是if啊 foreach啊什么的

3.1 if控制 - 如果

废话不多说 实例放这你就能懂:

    @if(isset($name))
        <p>{{ $name }}</p>
    @else
        <p>None</p>
    @endif

3.2 unless控制 - 除非

    @unless(!isset($name))
        <p>{{ $name }}</p>
    @endunless

3.3 for控制 - 循环

    @for ($i = 0; $i < 10; $i++)
        <p>{{ $i }}</p>
    @endfor

3.4 foreach控制 - 循环遍历

    {{--$names = [‘k‘, ‘l‘, ‘i‘];--}}
    @foreach($names as $name)
        <p>{{ $name }}</p>
    @endforeach
时间: 2024-12-24 03:05:50

Laravel 5.1 Blade模板引擎的相关文章

laravel框架总结(二) -- blade模板引擎

## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> //输出结果是 larave5 larave5 ##情形2 $name = laravel5 并且使用@的情形 <div class="title"> {{$name}} @{{$name}}</div> //输出结果是 larave5{{$name}} ##情形

Laravel之视图和Blade模板引擎

一.视图 1.视图文件存放在resources/views目录2.视图载入及传参 return view('greeting', ['name' => 'James']); 还可以通过with 方法添加独立的数据片段到视图return 还可以通过with 方法添加独立的数据片段到视图 return view('greeting')->with('name', 'john'); 也可以使用compact return view('greeting')->compact('name','ag

laravel框架(blade模板引擎)

## 1.基本用法 ```##情形1  $name = laravel5<div class="title"> {{$name}}  {{$name}}</div>//输出结果是  larave5  larave5 ##情形2  $name = laravel5  并且使用@的情形<div class="title"> {{$name}}  @{{$name}}</div>//输出结果是  larave5{{$name

Laravel 模板引擎Blade中标签详细介绍

这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将详细的介绍下: @yield与@section 首先,@yield是不可拓展的,如果你要定义的部分没有默认内容让子模版扩展,那么用@yield($name,$default)的形式会比较方便,如果你在子模版中并没有指定这个区块的内容,它就会显示默认内容,如果定义了,就会显示你定义的内容. 与之比较,

Laravel模板引擎Blade中section的一些标签的区别介绍

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: [email protected] 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?[email protected] 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与

Laravel5.1学习笔记8 Blade模板

简介 模板继承 定义一个页面布局模板 扩展一个页面布局模板 展示数据 控制语法的结构 Service Injection 扩展 Blade   简介 Blade 是 Laravel 提供的一个既简单又强大的模板引擎.和其他流行的 PHP 模板引擎不一样,Blade 并不限制你在视图(view)中使用原生 PHP 代码.所有 Blade 视图页面都将被编译成原生 PHP 代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译,这就意味着 Blade 基本上不会给你的应用增加任何额外负担.Bla

laravel使用的模板引擎 blade

使用blade引擎的话必须在控制器中使用use   Blade 模板文件使用“模板名”+.blade.php结尾. 如home.blade.php 在模板中调用数组数据进行循环: 结果如下:

前后端模板引擎

页面模板化,直接加载json,循环替换即可,把页面变成js模板,加载json,生成页面即可 JS模板,前端模板引擎 把JS获取到的接口数据重新放进页面,进行数据更新 php模板引擎: feather view http://feather-team.github.io/blade是laravel提供的模板引擎http://www.golaravel.com/laravel/docs/5.1/blade/ laravel框架 java模板引擎:freemarker 前端模板引擎artTemplat

架构之动静分离与模板引擎的关系

下午一个问题深深困扰我了,这个动静分离到底有什么优势. 动静分离:html和php代码分离,html可以放在cdn上,然后计算或拿数据用ajax解决.                  //两步走战略 模板引擎:仍然是.php的后缀,但会有标志,比如index.blade.php or login.tpl.php等等, 转到web服务器后,php解释器拿去replace掉模板引擎的占位符,最终生成content返回客户端.//还是属于,主web服务器处理好请求后一次性返回客户端. 动静分离:说白