2017-01-02 5 views
0

Ich habe Text, der an zwei Stellen (eins für Desktops und eins für mobile) angezeigt wird. Anstatt also den Text jedes Mal an zwei Stellen platzieren zu müssen, dachte ich, dass ich einfach einen Abschnitt erstellen und den Text an jedem Punkt mit @yield anzeigen könnte. Ich bekomme keine Fehler, aber der Inhalt wird nicht in das Dom geschrieben, wie ich es erwartet hatte. HierLaravel Blade @yield zeigt nicht die @section

ist die Klinge Vorlage:

<nav class="blue"> 
    <div class="nav-wrapper"> 
     <div class="container"> 
      <ul class="side-nav" id="mobile-side-nav"> 
       @yield('navbar-dropdown') 
      </ul> 
     </div> 
    </div> 
</nav> 
<ul id="nav-dropdown" class="dropdown-content"> 
    @yield('navbar-dropdown') 
</ul> 

{{-- List of items to place in the ul's --}} 
@section('navbar-dropdown') 
    <li><a class="blue-text waves-effect" href="#!">Create Project</a></li> 
    <li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li> 
    <li class="divider"></li> 
    <li><a class="blue-text waves-effect" href="#!">Settings</a></li> 
    <li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li> 
    <li class="divider"></li> 
    <li><a class="blue-text waves-effect" href="#!">Help</a></li> 
    <li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li> 
@endsection 

Bin ich Missverständnis, wie das funktioniert, oder bin ich nur etwas falsch gemacht?

Antwort

1

@yield funktioniert nur beim Erweitern eines Layouts.

Sie wären viel besser dran, den Inhalt Ihres Abschnitts narbar-dropdown in eine andere Datei zu setzen und dann include zu verwenden.

z. Erstellen Sie eine Datei auf resources/views/partials/navbar-dropdown.blade.php und fügen:

<li><a class="blue-text waves-effect" href="#!">Create Project</a></li> 
<li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li> 
<li class="divider"></li> 
<li><a class="blue-text waves-effect" href="#!">Settings</a></li> 
<li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li> 
<li class="divider"></li> 
<li><a class="blue-text waves-effect" href="#!">Help</a></li> 
<li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li> 

und dann in Ihre Layouts Datei würden Sie ändern:

@yield('navbar-dropdown') 

zu

@include('partials/navbar-dropdown') 

hoffe, das hilft!

+0

Das funktioniert! Ich wusste auch nicht, dass man '/' als Trennzeichen verwenden kann. Ich habe immer '.' Trennzeichen verwendet. Vielen Dank! –

+0

@GetOffMyRawn Ich bin froh, dass ich helfen konnte! Ja, du kannst entweder :) –

0

Ich denke, Sie haben das Layout nicht erweitert. Wenn Sie @yield und @section verwenden, müssen Sie die @yield in Ihrem Layout definieren, das Sie erweitern möchten.

Dies ist Ihre Template-Datei (genannt Laravel/resources/views/layouts/app.blade.php):

<html> 
<nav class="blue"> 
    <div class="nav-wrapper"> 
     <div class="container"> 
      <ul class="side-nav" id="mobile-side-nav"> 
       @yield('navbar-dropdown') 
      </ul> 
     </div> 
    </div> 
</nav> 
<ul id="nav-dropdown" class="dropdown-content"> 
    @yield('navbar-dropdown') 
</ul> 
</html> 

Und das ist Ihre Datei, die die Vorlage verlängern:

@extends('layouts.app') 

@section('navbar-dropdown') 
    <li><a class="blue-text waves-effect" href="#!">Create Project</a></li> 
    <li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li> 
    <li class="divider"></li> 
    <li><a class="blue-text waves-effect" href="#!">Settings</a></li> 
    <li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li> 
    <li class="divider"></li> 
    <li><a class="blue-text waves-effect" href="#!">Help</a></li> 
    <li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li> 
@endsection 

Hope this funktioniert!

+0

Nein, ich habe das Layout nicht erweitert. Es befindet sich in einem Navigationslayout, das in einem anderen Layout enthalten ist. –