2017-01-02 12 views
0

2つの場所に表示されるテキストがあります(デスクトップ用とモバイル用)。だから毎回2つの場所にテキストを配置する代わりに、私はちょうどセクションを作成し、@yieldを使って各スポットにテキストを表示できると思った。私はエラーは発生していませんが、私が期待していたとおり、コンテンツはDOMに書き出されていません。ここでLaravel Blade @yieldに@sectionが表示されない

は、ブレードのテンプレートです:

<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 

は、私はこれがどのように機能するか誤解、または私はちょうどそれが間違ってやっているのですか?

答えて

1

@yieldは、レイアウトを拡張するときにのみ機能します。

narbar-dropdownセクションの内容を別のファイルに入れてからincludeを使用するほうがずっと良いでしょう。

など。 resources/views/partials/navbar-dropdown.blade.phpでファイルを作成して追加します。

<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> 

、その後、あなたのレイアウトに変更するファイル:

@yield('navbar-dropdown') 

@include('partials/navbar-dropdown') 

にすると、この情報がお役に立てば幸い!

+0

それは動作します!私はあなたが '/'をセパレータとして使うことも知りませんでした。私は常にセパレータを使いました。ありがとう! –

+0

@GetOffMyLawnうれしいわよ!ええ、いずれかを使用することができます:) –

0

あなたはレイアウトを拡張していないと思います。 @yield@sectionを使用する場合は、レイアウト内に拡張する@yieldを定義する必要があります。

これは(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> 

そして、これはテンプレートを拡張しますあなたのファイルです:

@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 

は、この作品を願って!

+0

いいえ、私はレイアウトを拡張しませんでした。これは別のレイアウトに含まれるnavレイアウトにあります。 –

関連する問題