2017-08-07 20 views
0

私はLaravelのコード作成方法を学んでいます。これは、シンプルなシステム(主にWPとraw PHP)で長時間作業した後です。このために私はここにLaravel 5のためのチュートリアル以下の最新バージョンを実行している:Laravel @sectionと@showはデフォルトのコンテンツを無視します - なぜですか?

https://tutorials.kode-blog.com/laravel-blade-template

は、しかし、私が問題に遭遇しました。 /resources/views/layouts/master.blade.phpにあるマスターレイアウトは、これを含ま

@extends('layouts.master') 

@section('title', 'Page Title') 

@section('sidebar') 

<p>This is appended to the master sidebar.</p> 
@endsection 

@section('content') 
    <p>This is my body content.</p> 
@endsection 

私はそれが次の内容の /resources/views/page.blade.php上のファイルを作成するように求められ、マスターレイアウトセクションを、拡張 によ
<html> 
    <head> 
     <title>@yield('title')</title> 
    </head> 
    <body> 
     @section('sidebar') 
      This is the master sidebar. 
     @show 

     <div class="container"> 
      @yield('content') 
     </div> 
    </body> 
</html> 

チュートリアルによると、ルーティング後http://localhost/larashop/public/bladeを訪問した結果は、行の中で何かをする必要があります:

This is the master sidebar. 

This is appended to the master sidebar. 

This is my body content. 

しかし、代わりに私が取得しています:

This is appended to the master sidebar. 

This is my body content. 

コードがThis is the master sidebar.コードの一部、または@section('sidebar')からのコンテンツに置き換えることを無視して、何らかの理由で、あります。そうでない場合は、コードが正常に処理されていることを追加します。マスターテンプレートの<p></p><div></div>が必要な場所に表示されます。サイドバーのデフォルトのコンテンツはそうではありません。 @show@yield('sidebar')に置き換えても正しく表示されますが、何が起こっているのか、何らかの理由で間違っているのが本当に不思議です。

私はチュートリアルが5.0用であり、5.4上にあるので、バージョンの違いがあると思われますが、私は変更が何であるか、なぜそうであるかを私に指摘するものは見つけられません。私はこのようなより多くの問題を見つけることを恐れるので、先に進んでください。

私はすでにチュートリアルと私のインストールの違い、つまり/app/Http/routes.phpがであることを発見しましたが、その情報はかなり簡単に見つかりました。この1つのために私は何も見つけることができないので、誰も私を助けることができる?

答えて

0

ちょうど答えが見つかりました。 Laravelのバージョンが変更されたか、チュートリアルが間違っているためにこれが原因であるかどうかはわかりません。このチュートリアルどおり問題、:

https://laravel.com/docs/5.4/blade

page.blade.phpは、サイドバー部分の内側@parentに欠けていたということです。したがって、ファイルは次のようになります。

@extends('layouts.master') 

@section('title', 'Page Title') 

@section('sidebar') 

    @parent 

    <p>This is appended to the master sidebar.</p> 

@endsection 

@section('content') 
    <p>This is my body content.</p> 
@endsection 

これで、セクションが親セクションのコンテンツを含めて最初にレンダリングされます。

0

あなたのpage.blade.php


@section( 'サイドバー')ではなく@yield( 'サイドバー')でなければなりません。

+0

これについて詳しく説明しますか? @section( 'content')はうまく動作し、セクションを開くことなく@endsectionを使う理由がわかりません。チュートリアルは間違っていますか? – Tizzy

+0

私は人が@ sentection( 'content')を@endsectionなしで利用する方法を見ていないので、チュートリアルでは少し間違いがあるかもしれません。 [リンク](https://laracasts.com/series/laravel-from-scratch-2017)にアクセスして、laravelに関する良いチュートリアルをご覧ください。また、laravel 5.4のブレードのドキュメントも参照してください。[link](https://laravel.com/docs/5.4/blade) –

+0

問題の内容を確認しました。 page.blade.phpにありましたが、唯一の問題は、このセクションには '@ parent'がないことでした。あなたのリンクをありがとう、私は彼らの答えを見つけた:D – Tizzy

関連する問題