2017-02-01 4 views
2

Я использую версию Laravel 5.3.28. Я создал основной вид (main.blade.php) и пытался извлечь данные из разных дочерних представлений (navbar.blade.php), которые находятся в каталоге view/pages, но не работают.Laravel Blade вид не работает

Route файл в проекте/маршруты/web.php

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

Общий вид в ресурсы/просмотров/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> 

вид ребенка в ресурсах/просмотров/страниц/navbar.blade.php

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

Я могу видеть, как выход Test1 но не Test2. Почему это происходит?

ответ

1

Чтобы увидеть NavBar содержимого, которое необходимо вернуть navbar вид:

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

Но если вы планируете включить 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> 

Предположим, вы решили создать третий вид, который будет проходит основной вид с видом на NavBar. предположим, что ваш созданный вид с именем 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 является дочерним по отношению к основному виду

если вы звоните содержание ребенка родитель не будет видно там для просмотра вызовов («») NavBar