2016-12-03 5 views
1

Ich versuche yield in einer meiner blade Dateien, aber es funktioniert nicht.Laravel Klinge zeigt keinen Inhalt

Das ist mein index.blade.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en"> 
<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta name="token" content="{{ csrf_token() }}"> 
    <title>Forum</title> 
    <link href="https://fonts.googleapis.com/css?family=Lato:100,200,300,400" rel="stylesheet" type="text/css"> 
    <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700' rel='stylesheet' type='text/css'> 
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 

    <link href="/css/bulma.css" rel='stylesheet' type='text/css'> 
    <link href="/css/all.css" rel='stylesheet' type='text/css'> 
</head> 
<body> 
<div id="app"> 
    @include('shared.menu.menu') 
    @yield('content') 
</div> 
<script src="/js/app.js"></script> 
</body> 
</html> 

Das ist mein login.blade.php:

@extends('index') 
    @section('content') 
     @yield('shared.bar.bar') 
    @stop 

So ist die Navigationsleiste befindet sich an dieser Stelle zeigt. Aber die Bar ist nicht! Wenn ich ersetze: @yield('shared.bar.bar') mit test, test zeigt sich. Dies ist shared/bar/bar.blade.php:

@section('bar') 
<section class="hero is-primary"> 
    <div class="hero-body"> 
     <div class="container"> 
      <h1 class="title"> 
       test 
      </h1> 
      <h2 class="subtitle"> 
       test 
      </h2> 
     </div> 
    </div> 
</section> 
@stop 

Was mache ich falsch? Ist es auch möglich, Variablen an die Bar zu übergeben? So kann ich eine andere title und subtitle auf jeder Seite zeigen?

--EDIT--

@section('bar') 
<section class="hero is-primary"> 
    <div class="hero-body"> 
     <div class="container"> 
      <h1 class="title"> 
       {{ $title }} 
      </h1> 
      <h2 class="subtitle"> 
       {{ $subtitle }} 
      </h2> 
     </div> 
    </div> 
</section> 
@stop 

Antwort

1

Wenn Sie alle Ihre Code angezeigt werden, sieht aus wie Ihre Ausbeute

@yield('shared.bar.bar') 

Und yout Abschnitt

@section('bar') 

Wann sollte es be

@section('shared.bar.bar') 

Oder sollten Sie Ihre Ausbeute ändern

@yield('bar') 

Da @yield und @section nur Strings sind, sind sie nicht auf Dateien wie @include verwandt.

Und sieht aus wie diese Datei ist auch falsch:

@extends('index') 

@section('content') 
    @yield('shared.bar.bar') 
@stop 

@yield etwas, das Sie nur in Ihrem Haupt-Layout-Datei gestartet werden soll, weil es chaotisch und schwer und schwerer undestand bekommen kann, was passiert. Also, es sei denn, Sie haben eine Sektion "shared.bar".Bar‘dieses @yield zu füllen, sollten Sie wahrscheinlich so etwas wie

@extends('index') 

@section('content') 
    <form> 
     .... your login form 
    </form> 
@stop 

oder

@extends('index') 

@section('content') 
    @include('shared.bar.bar') 
@stop 

oder

@extends('index') 

@section('content') 
    @include('shared.bar.bar') 

    <form> 
     .... your login form 
    </form> 
@stop 

tun der Titel über Abschnitt können Sie auch geändert haben tun:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en"> 
<head> 
    <title>@yield('title')</title> 
</head> 

oder

<h1 class="title"> 
    @yield('title') 
</h1> 

Und Ihre Login-Blade-Datei können Sie

@extends('index') 

// This will tell the Blade Compiler to replace every 
// occurence of @yield('title') 
@section('title') 
    User Login 
@stop 

@section('content') 
    @include('shared.bar.bar') 

    <form> 
     .... your login form 
    </form> 
@stop 
+0

Hallo tun, wenn ich sie beide 'nennen' 'bar''' es funktioniert immer noch nicht. Auch wenn ich sie beide '' 'shared.bar.bar''' nenne. – Jamie

+0

Sieht so aus, als hättest du sie falsch konstruiert, sieh dir meinen Schnitt an. –

+0

Danke, dass du mir geholfen hast. Ich möchte auch 2 Parameter übergeben (siehe meine Bearbeitung oben). Aber das ist mit '' 'include''' nicht möglich. Deshalb verwende ich '' 'yield'''. – Jamie