我在学习Laravel(从版本5.3开始),这两个看起来非常相似,我知道的唯一区别是@include注入父变量并且还可以发送其他变量。Laravel的@yield和@include有什么区别?
- @yield和@include有什么区别?
- 什么时候应该使用@yield?
- 什么时候应该使用@include?
我在学习Laravel(从版本5.3开始),这两个看起来非常相似,我知道的唯一区别是@include注入父变量并且还可以发送其他变量。Laravel的@yield和@include有什么区别?
@yield主要用于在布局中定义节。当使用@extends扩展该布局时,您可以使用视图中的@section指令定义该部分中的内容。
布局通常包含您的HTML,头部,正文,页眉和页脚。您可以定义布局内的区域(@yield),其扩展模板页面将会把自己的内容
在你的主模板定义的区域。例如:
<body>
@yield('content')
</body>
比方说,您的主页上扩展了布局
@extends('layouts.app')
@section('content')
// home page content here
@endsection
您在“内容”部分在您的主页视图中的内容部分定义的任何HTML将被注入到布局它在那个地方延伸。
@include用于可重复使用的HTML就像一个标准的PHP包括。它没有像@yield和@section那样的父/子关系。
我强烈建议阅读上的Laravel网站刀片模板的文档更全面地了解
@include和@yield是两种完全不同类型的操作导入代码进入当前文件。
@include - 将单独文件的内容导入当前文件的放置位置。即:
布局文件:
< some html or other script >
@include('include.file_name') // "include." indicates the subdirectory that the file is in
< more html or other script >
包含文件(具有一个代码块的叶片文件):
< some cool code here >
'FILE_NAME'(也叶片的内容文件)然后导入到@include指令所在的位置。
@yield从子文件(“查看”刀片文件)中的“部分”导入代码。:
布局文件:
< some html or other script >
@yield('needed_section_name')
< more html or other script >
需要在它被设置为“扩展”该布局文件中的“视图”刀片文件下面的部分。
“查看”刀片文件:
@extends('layout.file_name')
... code as neeeded
@section('needed_section_name')
< some cool code here >
@stop
...
more code as needed
现在布局文件将在代码中使用的命名相匹配的部分进口。
关于这个问题的更多信息here ....
你的回答并不是真正的问题。你刚刚说的是'@ yield'和'@ include'都将HTML注入到父文件中。 Laravel文档也很差。不针对laravel新人。 '@ yield'和'@ include'之间的主要区别是:'@ include'定义了** view **来注入父项。 '@ yield'定义**部分**被注入。 '@ yield'只有在您的视图'@ extends'父视图时才起作用。 – user1651105