【问题标题】:How to include a sub-view in Blade templates?如何在 Blade 模板中包含子视图?
【发布时间】:2014-03-12 07:32:53
【问题描述】:

我正在尝试使用 laravel 建立一个网站,但我确实遇到了文档未涵盖的基本内容。

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

【问题讨论】:

    标签: laravel blade templating


    【解决方案1】:

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


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

    return View::make('auth.details', array('id' => $id));
    

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

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

    文件:layout.blade.php

    <html>
      <html stuff>
      @yield('content')
    </html>
    

    文件:hello.blade.php

    @extends('layout')
    
    @section('content')
      <html stuff>
    @stop
    

    【讨论】:

      【解决方案2】:

      可以使用刀片模板引擎:

      @include('view.name') 
      

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

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

      另一个例子

      @include('hello.world');
      

      将显示以下视图

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

      另一个例子

      @include('some.directory.structure.foo');
      

      将显示以下视图

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

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

      附加

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

      然后您可以在视图中使用该值,例如 &lt;p&gt;{{$paramName}}&lt;/p&gt;

      【讨论】:

      • 并传递参数:@include('partial', array("variable" => "value"))
      • 我如何从除views 之外的任何其他文件夹中包含?
      • 你可能不得不用你自己的实现覆盖 laravel 中的服务提供者之一。除非您有一个非常好的理由来更改视图文件夹,否则我不会打扰:太多的麻烦没有太多的收获。
      • @Sam 这不起作用,variable 在 Laravel 5.3 中显示为未定义
      • @itsazzad 你可以设置不同的文件夹,检查这个answer
      【解决方案3】:

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

      |--- 浏览量

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

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

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

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

      name.blade.php

        <html>
            @include('parentFolder.childFolder.mypage')
        </html>
      

      【讨论】:

        猜你喜欢
        • 2013-06-18
        • 2014-04-07
        • 2014-09-25
        • 2013-06-15
        • 2011-08-18
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        • 2017-10-30
        相关资源
        最近更新 更多