问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP blade模板的继承时,@extend('xx')怎么才能写进注释里面(直接写会报错)?

发布网友 发布时间:2022-04-06 07:35

我来回答

3个回答

懂视网 时间:2022-04-06 11:56

Blade模板是:

Blade 是 Laravel 提供的模板引擎,它简单强大。不像其他的 PHP 模板引擎,Blade 允许在视图中使用原生 PHP 代码。

实际上,所有的 Blade 视图最终都会被编译成原生 PHP 代码,缓存在 storage/framework/views 文件夹中。

Laravel 使用的是这些编译后的缓存文件,而不是视图本身,所以,Blade 对于应用程序来说是零开销的。当你修改了视图文件,那么它会重新编译并缓存,以便使用。Blade 视图以 blade.php 为后缀名,一般存放于 resources/views 文件夹中。

模板继承:

1、定义布局文件

Blade 模板引擎的主要两个优点是 “模板继承” 和 “区块”。举一个简单的例子,一个项目里,几乎所有的页面都是一样的布局,这时候就可以把这个布局提炼出来,作为母版页,继承了这个母版页的的页面都有一样的布局效果,成为母版页的子页。母版页还叫布局文件,布局文件就是一个 Blade 视图:

<!-- Stored in resources/views/layouts/app.blade.php -->
<html>
 <head>
  <title>App Name - @yield('title')</title>
 </head>
 <body>
  @section('sidebar')
  This is the master sidebar.
  @show
  <div class="container">
  @yield('content')
  </div>
 <body>
</html>

布局文件里除了基础的 HTNL 标签,还使用了两个指令:@section 和 @yield 。@section定义区块,@yield 定义区块里的内容。

下面。来定义布局文件的子页。

2、继承布局文件

子页中,使用 Blade 的 @extends 指令指定 “继承” 的布局文件,使用 @section 指令为在布局文件中使用 @section 和 @yield 指令的地方注入内容:

<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.app')
@section('title','Page Title')
@section('sidebar')
 <p> This is appended to the master sideebar</p>
@endsection
@section('content')
  <p>This ismy body content. </p>
@endsection

可以看到,在布局文件中使用 @yield 指令的地方,在子页中仍然使用 @section 注入内容;在布局文件中使用 @section 指令定义的一个好处是:在子页中使用 @section 注入时,可以使用 @parent 指令附加(而非重写)在布局文件中的内容,而在布局文件中使用 @yield 指令定义的地方是做不到的。@parent 指令会在视图渲染的时替换成布局文件里的内容。

注意,与在文件布局里定义的 sidebar 不同的是,子页里使用 @endsection 结束,而非 @show 。因为 @endsection 仅用来定义区块,而 @show 是用来定义、立马产出区块的。

从路由中直接返回视图文件,要用到全局辅助函数 helper :

Route::get('blade', function(){
 return view('child');
})

3、组件&插槽

组件和插槽提供了类似布局和区块的优点。而组件和插槽的心智模型更符合直觉。设想一下,在我们的项目中有一个可重复的 “弹框” 组件:

<!-- Stored resource/views/alter.blade.php -->
<div class="alter alter-danger">
 {{ $slot }}
</div>

{{ $slot }} 表示插入组建的内容。构建此组件,是使用 Blade 的@component指令:

@component('alter')
 <strong>Whoops!</strong> Something went wrong!
@endcomponent

在这个场景里,{{ $slot }} 变量的内容是:

<strong>Whoops! </strong> Something went wrong!

有时一个组件需要多个插槽。这时,只需要稍改组件代码,定义一个 “标题” 插槽,这个插槽称命名插槽。命名插槽是通过简单的 “打印” 匹配其名称的变量来显示内容的:

<!-- Stored resources/views/alter.blade.php-->
<div class="alter alter-danger">
  <div class="alter-title">{{ $title }}</div>
  {{ $slot }}
</div>

为名名插槽注入内容,使用 @slot 指令。所有不在 @slot 指令里的内容都会传递给组件里的 $slot 变量。

@compontent ('alter')
  @slot('title')
  Forbidden
  @endslot
 You are not allowed to access this resource!
@edcompontent~

4、为组建传递额外数据:

有时需要为组建件递额外数据。为此,可以为 @conponent 指令传递第二个数组参数。指定要传递的额外。据所有过去的额外数据作为变量,在组件模板里都可以取的:

@component
 <compontent('alter', ['foo' => 'bar');
  .....
@endCompontent

5、显示数据

向 Blade 视图传递数据,是通过将变量包裹在 [ ] 里实现的:

Route::get('greeting', function(){
  return view('welcome', [ 'name' => ''Samantha']);
})

下面就可以使用 name 变量显示内容了:

Hello! {{ $name }}

{{ }} 是 Blade 视图的打印语句,当然,打印语句里不限制只能打印变量内容,也可以使用 PHP 函数。实际上,打印语句这里可以使用任何 PHP 代码:

The current UNIX timestamp is {{ time() }}

6、显示非转移数据

默认,所有传递给 Blade {{ }} 语句的内容都会使用 htmlspecialchar 函数处理、将内容转义,避免 XSS 攻击。如果无需转义输出的内容,可以使用下面语法:

Hello! {{!! $name !!}}.

不过千万要小心,应该优先选择使用转义的 {{ }} 语法避免 XXS 攻击。因为,有时你很难避免用户有意的、无意的数据输入。

相关学习推荐:Laravel

热心网友 时间:2022-04-06 09:04

如下

{{-- 此注释将不会出现在渲染后的 HTML --}}

参考链接

网页链接

热心网友 时间:2022-04-06 10:22

用别人的框架很拉胯啊,自己写一个框架吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
陈八两面馆的什么面最好吃? 杭州湾跨海大桥可以骑行吗 杭州湾跨海大桥上能骑车吗? ...不知道可不可以骑自行车,又需要做哪些准备,谢谢各位资深人士了... 激光祛痘坑的效果如何? 口述:3个闺密分享1个“软饭男” 骚气文案暗示-推荐65句 三个男人怎么晒朋友圈 任钊的介绍 请问德阳青依江路口到德阳中级人民法院坐几路公交车 @if,so在php中是什么意思 请问phpstorm里如何新建一个blade模板 怎么让一个div在另一个div中垂直居中 如何让div垂直居中 如何让一个浮动的块元素垂直居中 简述内联元素如何垂直居中。 如何让div 元素中的div元素垂直居中 如何将一个div水平垂直居中 谁能把DOS下的命令做一个详细介绍呀?越详细越好 win10 10586是什么版本 win10正式版更新的KB3081424什么用? 求Windows 10Version 1507 KB4598231补丁(32&64位)网盘资源 win10KB4025342更新包是干什么的 首先,先看自己win10系统是什么版本 update fo windows 10forx64-based sestems(KB4480730)是什么 win10 10586.36更新了什么内容 win10 10586.36怎么样 win10的更新的kb4033631有什么用 win10 version 1703 与之前的有什么不同 2020-适用于Windows10 Version1809 的 03 累积更新,适合基于 x64 的系统 (KB4538461)? 安装My sql的时候出现这样的错误2503怎么解决 Laravel 5.1 会有哪些变化 blade是什么意思啊 PHP lumen怎么输出uuid 英语里面BLADE 和SWORD 有什么区别 laravel 模板语法规则{{}}不识别怎么办 blade中文是什么意思 laravel框架摸版继承问题 interface Blade这个接口是什么意思 EMC 存储中X-Blade是什么 武道球魂的人物简介 骑马与砍杀戎马丹心武库以及兵器厂问题 Blade&Soul是什么意思 BLADE是什么品牌的轮胎? 如何实现块级元素的水平居中 CSS实现水平居中的几种方式 极客标签 如何让DIV高度固定 水平居中 最好写的详细点 如何让一个未知宽度的元素水平居中 如何让div里面的水平居中 如何让div中的内容水平居中,垂直居中 怎么让div里面的元素水平居中