How to include a sub-view in Blade templates?

后端 未结 4 1187
日久生厌
日久生厌 2020-11-28 12:46

I am trying to set up a site using laravel, but I\'m really having trouble with basic things that the documentation just doesn\'t cover.

In this case, I see that it

相关标签:
4条回答
  • 2020-11-28 12:51

    EDIT: Below was the preferred solution in 2014. Nowadays you should use @include, as mentioned in the other answer.


    In Laravel views the dot is used as folder separator. So for example I have this code

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

    which points to app/views/auth/details.blade.php

    And to include a view inside a view you do like this:

    file: layout.blade.php

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

    file: hello.blade.php

    @extends('layout')
    
    @section('content')
      <html stuff>
    @stop
    
    0 讨论(0)
  • 2020-11-28 12:55

    As of Laravel 5.6, if you have this kind of structure and you want to include another blade file inside a subfolder,

    |--- views

    |------- parentFolder (Folder)

    |---------- name.blade.php (Blade File)

    |---------- childFolder (Folder)

    |-------------- mypage.blade.php (Blade File)

    name.blade.php

      <html>
          @include('parentFolder.childFolder.mypage')
      </html>
    
    0 讨论(0)
  • 2020-11-28 12:57

    You can use the blade template engine:

    @include('view.name') 
    

    'view.name' would live in your main views folder:

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

    Another example

    @include('hello.world');
    

    would display the following view

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

    Another example

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

    would display the following view

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

    So basically the dot notation defines the directory hierarchy that your view is in, followed by the view name, relative to app/views folder for laravel 4.x or your resources/views folder in laravel 5.x

    ADDITIONAL

    If you want to pass parameters: @include('view.name', array('paramName' => 'value'))

    You can then use the value in your views like so <p>{{$paramName}}</p>

    0 讨论(0)
  • 2020-11-28 13:11

    When you use laravel modules, you may add the name's module:

    @include('cimple::shared.posts_list')
    
    0 讨论(0)
提交回复
热议问题