7

私はSOを検索し、Laravelのドキュメントを掘り下げましたが、やりたいことができるかどうかはよくわかりません。

Laravel 4 を使用しています。ビューを他のビューにネストする方法を知りたいです。

たとえば、私は基本レイアウトを持っています..それを呼び出しましょうlayout.blade.php

<html>
    <head>
      <title>{{ $title }}</title>
    </head>
    <body>
        @yield('nav')  
        @yield('content')
    </body>
</html>

次に、次のページのブレードがありますhome

@extends('layout')

@section('nav')
<p>NAVIGATION</P>
@end

@section('content')
<p>HELLO WORLD!</P>
@end

管理者用、スーパー ユーザー用、一般ユーザー用の 2 つの異なるナビゲーション レイアウトがあります。

内に別のブレード ビューを追加する方法はありsection('nav')ますか?

@section('nav')
// do something magical here?
@end

いくつかのスニペットを再利用できるのに、ブレード レイアウトごとにナビゲーション コードを繰り返さなければならないというのは理にかなっていません。

4

3 に答える 3

14

あなたはこれを行うことができます

@section('nav')
  @include('another')
  @include('magical')
  @include('snippet')
@end
于 2013-06-05T22:19:12.833 に答える
8

別の解決策として、異なるサブビューを動的にロードしたい場合は、Viewクラスを使用してネストできます。たとえば、ルート/コントローラーに次のものを含めることができます。

return View::make('home')->nest('subnav','home/nav', array('some' => 'data'); 

そして、home.blade.phpあなたはこれを行うことができます:

@extends('layout')

@section('nav')
<p>NAVIGATION</p>
{{ $subnav }}
@end

@section('content')
<p>HELLO WORLD!</p>
@end

これは、インクルードと変数でも実行できます ( @include($viewname, array('some' => 'data')) が、特にネストされたビューが常に同じブレード ファイルであるとは限らない場合は、ビューからロジックが削除されるため、よりクリーンであると言えます。

于 2014-12-28T22:56:07.990 に答える
0

これは遅れていますが、これを行うこともできます:

例えば。admin.php では、これを持つことができます:

@extends('home')

@section('nav')
  // navigation
@endsection

@section('content')
  // admin page content
@endsection

これが優れているかどうかはわかりませんが、ブレードを使用してビューをネストすることについての質問に答えているだけです。これは、ビューをネストする方法です。

于 2014-11-05T15:41:52.200 に答える