2017-02-01 34 views
2

我正在使用Laravel 5.3.28版本。我創建了主視圖(main.blade.php)並試圖從不同的子視圖(navbar.blade.php)中提取詳細信息,該視圖位於view/pages目錄中,但它不起作用。在資源/視圖/ main.blade.php項目/路線/ web.phpLaravel刀片視圖不起作用

路線文件

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

主視圖(此文件將從navbar.blade.php接收數據)

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

子視圖/ navbar.blade.php

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

我能看到輸出爲Test1但不Test2的。爲什麼發生這種情況?

回答

1

要看到導航欄的內容,你應該返回navbar觀點:

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

但是,如果你打算以包括許多視圖導航欄,你應該使用@include()而不是使用section()extends()yield()

@include(`navbar`) 
+0

我保存路徑相同的代碼,rremoved產量,部分和延伸,並嘗試@include(「pages.navbar」 )。它的工作原理 – vivek321

+0

很高興幫助) –

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> 

希望這將清除約視圖渲染你的概念路線

+0

默認情況下,我打電話給main.blade.php,它將包含通用代碼,navbar是動態內容,它將被添加到main中。這不可能嗎? – vivek321

+0

看到並閱讀我更新的答案。它會清除你關於擴展視圖的概念 – Vikash

1

你應該調用view('navbar')而不是view('main'),因爲navbar是主視圖的子視圖

如果你打電話父子內容不會有見過調用視圖(「導航欄」)