Blade模板

關於模板繼承和分區段

@section和@yield的實驗

①關於@section...@show嘗試

測試1

 {{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@section('content')
<p>這是appV2test的内容</p>
@show
</body>
</html>
 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title','測試頁')
@section('content')
<p>更改文本内容</p>
<p>我的新内容????</p>
@stop

實驗結果:

更改文本内容

我的新内容????

 

測試2

 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title','測試頁')
@section('content')
@parent {{--new addition--}}
<p>更改文本内容</p>
<p>我的新内容????</p>
@stop

 實驗結果:

這是appV2test的内容

更改文本内容

我的新内容????

結論:被@section...@show包裹的内容在被繼承時,若不使用@parent的情況下不會被渲染進網頁里。

 

②關於@section...@stop嘗試

測試1

 {{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@section('content')
<p>這是appV2test的内容</p>
@stop
</body>
</html>
 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title','測試頁')
@section('content')
<p>更改文本内容</p>
<p>我的新内容????</p>
@stop

實驗結果:

<!--空的-->
<body>
</body>

  

測試2

 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title','測試頁')
@section('content')
@parent {{--new addition--}}
<p>更改文本内容</p>
<p>我的新内容????</p>
@stop

實驗結果:

<!--空的-->
<body>
</body>

結論:被@section...@stop包裹的内容在被繼承時,不會被渲染進繼承頁里,即使使用@parent也是一樣。

③關於@yield嘗試

測試1

 {{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
<p>這是appV2test的内容</p>
</body>
</html>
 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title', '測試頁')
@section('content')
<p>更改文本内容</p>
<p>我的新内容????</p>
@stop

實驗結果:

更改文本内容

我的新内容????

這是appV2test的内容

測試2:

{{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
<p>這是appV2test的内容</p>
@show {{--new addition--}}
</body>
</html>

實驗結果:

更改文本内容

我的新内容????

這是appV2test的内容

測試3:

{{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
<p>這是appV2test的内容</p>
@stop {{--new change--}}
</body>
</html>

實驗結果:

{{--出錯--}}

結論:被@yield(或@yield...@show包裹的内容,等價)包裹的内容,在渲染到@yield所在DOM節點的父節點時,會先渲染繼承頁面在該父節點下的内容,最後再將被繼承頁的内容填充進去。不存在@yield...@stop。

關於@append和@override嘗試

測試1:

 {{--appV2test.blade.php--}}
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('body')
<div>
@yield('content')
<p>直接被繼承内容1</p>
<p>直接被繼承内容2</p>
<p>直接被繼承内容3</p>
</div>
</body>
</html>
 {{--def.blade.php--}}
@extends('test.appV2test')
@section('title', '測試頁')
@section('body')
@section('content')
<p>第一行</p>
@append <p>繼承頁内容1</p> @section('content')
<p>第二行</p>
@append <p>繼承頁内容2</p> @section('content')
<p>第三行</p>
@stop <p>繼承頁内容3</p>
@stop

實驗結果:

繼承頁内容1

繼承頁内容2

繼承頁内容3

第一行

第二行

直接被繼承内容1

直接被繼承内容2

直接被繼承内容3

暫時性結論:

注意到,先是渲染了繼承頁原有的内容,再渲染在繼承頁中通過@append添加到被選中分區段的内容,最後渲染被繼承頁的内容。同時,這裏的<p>第三行</p>由於是@stop結尾而沒有被加入,衹視爲不再繼續添加,并抛棄此處的内容。

測試2:

{{--def.blade.php--}}
@extends('test.appV2test')
@section('title', '測試頁')
@section('body')
@section('content')
<p>第一行</p>
@append <p>繼承頁内容1</p> @section('content')
<p>第二行</p>
@append <p>繼承頁内容2</p> @section('content')
<p>第三行</p>
@stop @section('content') {{--new addition--}}
<p>抛棄前面添加的</p>
@override <p>繼承頁内容3</p>
@stop

實驗結果:

 <p>繼承頁内容1</p>
<p>繼承頁内容2</p>
<html>
<head>
<title>測試頁</title>
</head>
<body>
<p>body是否被繼承</p>
<div>
<p>第一行</p>
<p>第二行</p>
<p>直接被繼承内容1</p>
<p>直接被繼承内容2</p>
<p>直接被繼承内容3</p>
</div>
</body>
</html>

暫時性結論:

不解。從結果上看,在@override之前的繼承頁的内容,全部被渲染到了最前面,甚至超過了其父節點的範圍。渲染完這些内容後,才開始繼承被繼承頁的内容。同時,本來應該被覆寫的内容被抛去,繼承頁在@override之後的内容也被抛去。其它内容渲染操作與測試1無異。

其它相關

{{ ... }}

自動轉義html標記,使標記原樣輸出

{!! ... !!}

直接打印變量内容,按標記進行相應渲染

@if(...)

@elseif(...)

@else

@endif

判斷

@foreach($lists as $list)

<li>{{$list}}</li>

@empty

<li>You don't have any lists saved.</li>

@endforeach

循環輸出,可通過@empty判斷要循環内容是否爲空

@include('...','...')

引入子文件,第二參數可傳參(不知有何用處,因爲include進來的文件能直接使用主文件的變量)

在laravel下關於blade模板的嘗試的更多相关文章

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

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  2. Laravel之视图和Blade模板引擎

    一.视图 1.视图文件存放在resources/views目录2.视图载入及传参 return view('greeting', ['name' => 'James']); 还可以通过with ...

  3. laravel Blade 模板引擎

    与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染.和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐 ...

  4. laravel框架之blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  5. PHP laravel 5.0 Blade 模板引擎 Api使用备注

    PHP laravel 5.0 Blade 模板引擎 Api使用备注 /** * PHP laravel 5.0 Blade 模板引擎 Api使用备注 **/ //子模版中开头,调用@extends( ...

  6. Laravel 5.2 三、中间件、视图与 Blade 模板引擎

    一.中间件 Laravel 的 HTTP 中间件提供了对路由的一层过滤和保护.下面模拟一下用中间件验证后台登录. 1. 创建中间件 cmd 窗口进入项目目录,使用 artisan 命令创建 php a ...

  7. Laravel 解决blade模板转义html标签问题

    当我们使用富文本编译器(如:Ueditor编译器)保存编辑的内容后,在blade模板中,想要显示原生的html标签内容时该怎么做? 首先,了解下laravel {{ 变量名 }} 与{!! 变量名 ! ...

  8. Laravel框架中Blade模板的用法

    1. 继承.片段.占位.组件.插槽 1.1 继承 1.定义父模板 Laravel/resources/views/base.blade.php 2.子模板继承 @extends('base') 1.2 ...

  9. laravel的blade模板的布局嵌套

    测试路由 Route::get('/', function() { $value = [,,]; return view('home.index', array('data' => $value ...

随机推荐

  1. Javascript DOM编程艺术 语法部分

    1.变量,可以变化的东西我们称为变量,随着年龄的增大,我们的age不断变大 2.Javascript变量声明用var,可以不声明变量类型.尽量声明为一个字符串字面量. 3.弱类型:要求程序员必须明确的 ...

  2. 2.4G/5G频段WLAN的模式、带宽、协商速率

    2.4G频段 5G频段

  3. (c语言编程)出现错误:null undeclared identifier

    原因:没有添加头文件#include <stdio.h> 添加完头文件后,错误消失

  4. html canvas 骰子1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 【iCore2 模块相关资料】iM_LAN 100M 以太网模块UDP例程

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...

  6. iOS thirdKeyboard Develop (APP Extension)

    如果需要开发第三方键盘 首先得了解一下苹果官方文档  https://developer.apple.com/library/ios/documentation/General/Conceptual/ ...

  7. arch安装

    [archwiki-install]: (https://wiki.archlinux.org/index.php/Installation_guide) uefi+gpt Gummiboot #se ...

  8. 领域设计之模型充血、Repository对象注入

    工作中接触了不少项目组,他们在实际的项目开发中,Domain Object的贫血模型设计,还是主要的应用的范式.原因在于,贫血模型模型设计中,把所有涉及持久化的业务逻辑,封装到了Domain Serv ...

  9. system_call中断处理过程分析

    本文所有的分析内容都是基于Linux3.18.6内核,鉴于对应不同内核版本,系统调用的实现不相同.若需要分析其他版本内核的系统调用的实现过程,请谨慎参考. system_call函数的功能是用来响应外 ...

  10. 基于vue的新组件开发

    前天完成了一个新组件的开发,做的过程也是各种遇到问题,彻底弄懂了slot,巩固了一些flex布局和jquery的知识,比起自己第一次做组件开发,现在已经是能够下手做,遇到问题解决问题,还算有进步. 但 ...