如何在Blade模板中包含子视图?

Ben*_*ird 47 templating laravel blade

我正在尝试使用laravel建立一个站点,但我真的遇到了文档根本没有涉及的基本内容的问题.

在这种情况下,我看到它说我可以通过使用包含一个视图@include('view.name').什么是view.name?它在哪里保存?我尝试创建一个文件app/views/view.name.blade.php,但它没有被读取.文件名如何映射到刀片名称?

Gaz*_*dge 188

您可以使用刀片模板引擎:

@include('view.name') 
Run Code Online (Sandbox Code Playgroud)

'view.name'将存在于您的主视图文件夹中:

// for laravel 4.X
app/views/view/name.blade.php  

// for laravel 5.X
resources/views/view/name.blade.php
Run Code Online (Sandbox Code Playgroud)

另一个例子

@include('hello.world');
Run Code Online (Sandbox Code Playgroud)

将显示以下视图

// for laravel 4.X
app/views/hello/world.blade.php

// for laravel 5.X
resources/views/hello/world.blade.php
Run Code Online (Sandbox Code Playgroud)

另一个例子

@include('some.directory.structure.foo');
Run Code Online (Sandbox Code Playgroud)

将显示以下视图

// for Laravel 4.X
app/views/some/directory/structure/foo.blade.php

// for Laravel 5.X
resources/views/some/directory/structure/foo.blade.php
Run Code Online (Sandbox Code Playgroud)

所以基本上点符号定义了视图所在的目录层次结构,后面是视图名称,相app/views对于laravel 4.x的resources/views文件夹或laravel 5.x中的文件夹

额外

如果要传递参数: @include('view.name', array('paramName' => 'value'))

然后,您可以像这样使用视图中的值 <p>{{$paramName}}</p>

  • 并传递参数:@include('partial',array("variable"=>"value")) (4认同)
  • 如何包含除"views"之外的任何其他文件夹? (2认同)
  • 您可能必须使用自己的实现覆盖laravel中的一个服务提供者.除非你有一个很好的理由改变视图文件夹,否则我不会打扰:太多的麻烦没有多少收益. (2认同)

win*_*ace 25

编辑:以下是2014年的首选解决方案.现在您应该使用@include,如其他答案中所述.


在Laravel视图中,点用作文件夹分隔符.所以例如我有这个代码

return View::make('auth.details', array('id' => $id));
Run Code Online (Sandbox Code Playgroud)

它指向app/views/auth/details.blade.php

要在视图中包含视图,您可以这样做:

file:layout.blade.php

<html>
  <html stuff>
  @yield('content')
</html>
Run Code Online (Sandbox Code Playgroud)

file:hello.blade.php

@extends('layout')

@section('content')
  <html stuff>
@stop
Run Code Online (Sandbox Code Playgroud)


Ken*_*son 5

从Laravel 5.6开始,如果您具有这种结构,并且想在子文件夹中包含另一个刀片文件,

| ---意见

| ------- parentFolder(文件夹)

| ---------- name.blade.php(刀片文件)

| ---------- childFolder(文件夹)

| -------------- mypage.blade.php(刀片文件)

name.blade.php

  <html>
      @include('parentFolder.childFolder.mypage')
  </html>
Run Code Online (Sandbox Code Playgroud)