Laravel Blade视图无效

时间:2017-02-01 19:09:58

标签: php laravel laravel-5.3

我使用的是Laravel 5.3.28版本。我创建了主视图(main.blade.php)并试图从不同的子视图(navbar.blade.php)中提取细节,这些视图位于view / pages目录中,但它不起作用。

项目/ routes / web.php中的路由文件

            Route::get('/', function () {
                return view('main');
            });

resources / views / main.blade.php中的主视图(此文件将从navbar.blade.php接收数据)

                        <div id="column">Test1</div>
                        <div id="container">
                            @yield('content')<!--This will get the content from navbar.blade.php-->
                        </div>

资源中的子视图/ views / pages / navbar.blade.php

            @extends('main')
            @section('content')
                    <div id="row">
                       Test2
                     </div>
            @endsection

我能够看到输出为Test1而不是Test2。为什么会发生这种情况?

3 个答案:

答案 0 :(得分:1)

要查看导航栏内容,您应该返回navbar视图:

Route::get('navbar', function () {
    return view('navbar');
});

但是,如果您计划在许多视图中添加导航栏,则应使用@include()而不是section()extends()yield()

@include(`navbar`)

答案 1 :(得分:1)

要查看输出Test2,您必须返回navbar视图

Route::get('/', function () {
        return view('navbar');
    });

@yield是您扩展main view的地方,然后您可以在此内容中添加内容。

我在下面通过使用您的视图文件的示例进行解释

你可以简单地把它放在navbar.blade.php中。它不需要扩展。

 <div id="row">
     Test2
 </div>

在你的main.blade.php中你可以把这个

  <div id="column">Test1</div>
                    <div id="container">
                        @include('navbar')
                      @yield('content')  
  </div>

假设您已决定创建第三个视图,该视图将使用导航栏视图扩展主视图。假设您创建了一个名为home.blade.php的视图并将其添加到home.blade.php视图中

@extends('main')
@section('content')
 Welcome Home !!!
@endsection

然后,如果您致电创建您的路线,如下所示

Route::get('/home', function () {
    return view('home');
});

它将呈现如下

<div id="column">Test1</div>
                <div id="container">
                      <div id="row">
                        Test2
                      </div>
                 Welcome Home !!!  
               </div>

希望这将清除您关于视图渲染的概念

答案 2 :(得分:1)

你应该调用view('navbar')而不是view('main')因为navbar是主视图的子项

如果您呼叫父母,则不会在那里看到呼叫视图('navbar')