-->

PHP资讯

您的当前位置:首页 > 资讯 > Laravel框架

laravel整理-4视图view

2019-06-24 13:33:31  来源:admin 点击:631

视图创建
Blade 是 Laravel 提供的一个简单而又强大的模板引擎。和其他流行的 PHP 模板引擎不同,Blade 并不限制你在视图中使用原生 PHP 代码。所有 Blade 视图文件都将被编译成原生的 PHP 代码并缓存起来,除非它被修改,否则不会重新编译 视图存放在resources/views文件夹下面。
Blade模板执行流程
在使用 View 组件输出时,不管是调用 helpers 中提供的 view 函数还是使用 Facades 提供静态接口 View::make(),实际上执行的都是 Illuminate\View\Factory 中的 make 方法。以此为入口,很容易就能知道视图解析输出的流程:
1、查找视图文件;
2、根据文件名后缀从 Container 中取出响应的引擎;
3、加载视图文件或编译后加载编译后的文件执行,同时将需要解析的数据暴露在视图文件环境中。
Factory 中的一些方法完成了以上第一步的过程,文件查找是调用的 FileViewFinder,其中使用了一些 Illuminate\Filesystem\Filesystem 中的方法,这个类中还有一些方法是跟 events 相关的,这里就忽略不表了。
在以上步骤中,如果中获取到的视图文件是需要“编译”的,引擎会调用 “Blade 编译器”将原视图进行“编译”并保存在 cache
目录中然后加载输出。下次调用时如果发现源文件并没有被修改过就不再重新编译而是直接获取缓存文件并输出。
编译:“编译”两个字加引号,因为这显然不是真正意义上的代码编译的过程,只是一些正则替换语法的过程。
{{ 与 }} 之间是要输出的内容,也有扩展的两个方法 {{{ ... }}} 和 {!! .. !!} 分别用于转义输出和不转义输出,5.0 以后的版本中 {{ ... }} 之间的默认情况下也是转义输出的;
@ 符号开头的都是指令,包括 PHP 本身有的 if else foreach 以及扩展的 include yield stop 等等;
而 Blade 对于解析的处理实际上是分了四种情况:
Extensions -> 扩展部分
Statements -> 语句块(就是 @ 开头的指令)
Comments -> 注释部分({{-- ... --}} 的写法,解析之后是 PHP 的注释而不是 HTML的注释)
Echos -> 输出
扩展:输出语法
注释部分也很简单,就是将 {{-- …--}} 替换成
compileRawEchos -> 输出未经转义的内容 ({!! … !!})
compileEscapedEchos -> 输出转义之后的内容 ({{{ … }}})
compileRegularEchos -> 正常输出 ({{ … }})
创建方式

1、创建视图文件:fileName.blade.php (1) 创建子目录后,文件路径引用可以用 目录\[/]文件名  目录.文件名 注:视图文件是以.blade.php结尾  []代表可选 判断视图是否存在:用View::exists()

image.png

视图赋值

直接用view方法 

image.png

 当用这种方式传递数据时,作为第二个参数的数据必须是键值对数组。在视图文件中,你可以通过对应的键获取相应的值,例如

image.png

2采用with方法:

image.png

image.png

模板继承

https://blog.csdn.net/czhphp/article/details/53317784 可以参考

Blade 的两个主要优点是 模板继承 和 区块。模板继承允许你建立一个基本的"骨架"模板,包含您的网站的所有公用的元素,并定义一些区块(block)让子模板可以覆盖。

布局指令:@section:指令定义视图的一部分内容
@show:@section指令下面的结束符合。还有其他结束符@stop, @overwrite 以及 @append 来结束,@endsection
@show 指的是执行到此处时将该 section 中的内容输出到页面, @stop 则只是进行内容解析,并且不再处理当前模板中后续对该section的处理。并不输出内容到页面
@overwrite:覆盖之前的所有定义,以这次的为准
@append:再次添加模板
@yield:用来显示值定部分内容。如果你要定义的部分没有默认内容让子模板扩展的,那么用 @yield($name, $default) 的形式会比较方便;
@parent:保留父模板内容。但是@yield模板继承后继承模板将不会保留父模板内容
例如:

image.png

image.png

image.png

相关文章更多 >

© 2024版权所有 水水网

电话:171780793