13

Laravel 3では、これを行っていました。

<?php render('partials.header'); ?>

これは、Laravel の Blade テンプレートを使用せずに、「PHP」ビューで行われました。

バージョン 4 でこれに相当するものは何ですか?

私は試した

<?php @include('partials.header'); ?>

これはうまくいきません。

私が行った場合

@include('partials.header')

ファイルを「.blade.php」として保存する必要があります

ブレード テンプレートを使用せずに「サブビュー」を含めるにはどうすればよいですか?

4

7 に答える 7

24

Laravel 4 のビュー内にビューを含めるにはさまざまな方法があります。選択は、以下に概説する結果のいずれかによって異なります...

柔軟性のために

適切なコントローラーで部分ビューをコンパイル (レンダリング)$data['']し、配列 を使用してこれらのビューをメイン ビューに渡すことができます。

ビューの数が増えるにつれて、これは面倒になるかもしれませんが、少なくとも、多くの柔軟性があります :)

例については、以下のコードを参照してください。

コントローラ

...

public function showMyView()
{
   /* Header partial view */
   $data['header'] = View::make('partials.header');

   /* Flexible enough for any kind of partial views you require (e.g. a Header Menu partial view) */
   $data['header_menu'] = View::make('partials.header_menu'); 

   /* Footer partial view */
   $data['footer'] = View::make('partials.footer');

   return View::make('myView', $data);
}

...

意見

上記のパーシャルを次のように含めることができます (View コードの任意の位置に):

<html>  
<head></head>   
<body>

<!-- include partial views -->
<?php echo ($header) ?>  
<?php echo ($header_menu) ?>  

<div id="main-content-area"></div>  

<?php echo ($footer) ?>  

</body>  
</html>

部分ビューがメイン ビューに追加されます。


簡単にするために

実際には、上記の方法を使用するよりもはるかに簡単な方法があります: ビューの html にこれを含めるだけです...

意見

<html>  
<head></head>   
<body>

<!-- include partial view: header -->
<?php echo View::make('partials.header') ?>

   <div id="main-content-area">
   </div>

<!-- include partial view: footer -->
<?php echo View::make('partials.footer') ?>

</body>  
</html>

Laravel の View::make() 関数に正しいファイルパスを提供するために、パーシャルのフォルダー構造が[views/partials/header.php]であることを確認してください。

警告

$data['page_title']コントローラーでを渡そうとすると、ネストされたビューはデータを受け取りません。
これらのネストされたビューにデータを渡すには、次のようにする必要があります。

<html>  
<head></head>   
<body>

<?php
   /* Pass page title to header partial view */
   $data ['page_title'] = "My awesome website";  
   echo View::make('partials.header', $data); 
?>

<div id="main-content-area"></div>

<?php echo View::make('partials.footer') ?>

</body>  
</html>

ノート

質問には「Blade テンプレートを使用しない」と明確に記載されているため、Blade テンプレート コードを含まないソリューションを提供するようにしました。

幸運を :)

于 2013-08-07T13:55:57.930 に答える
9

この投稿以降、この投稿で何人の人が Laravel 4 を使用しているかはわかりませんが、パーシャルを含めたり、ビュータイプを分離したりしたい場合は、 @includes を使用して実行できます

たとえば、ヘッダー、フッター、サイドバーなどのパーシャル フォルダーが必要な場合

下にパーシャル用のディレクトリを作成します

app/views/partials

次に、パーシャルを作成します

app/views/partials/navigation.blade.php

次に、マスター テンプレート ファイルに次の行を追加します。

@include('partials.navigation')

それだけです。

** おまけに、パーシャルにデータを渡したり、パーシャル内にネストされたパーシャルを含めることもできます

于 2014-07-02T14:02:39.433 に答える
3

Viewのネスト機能が使える

View::make('default.layout')->nest('header', 'default.header');

3 番目のパラメーターを使用して、データをテンプレートに渡します

View::make('default.layout')->nest('header', 'default.header', ['name' => 'John Doe', 'test' => 'It works!']);

あなたのビュー/デフォルト/header.blade.php

<div>hey {{ $name }}! {{ $test }}</div>
于 2014-07-13T21:11:43.290 に答える
0

ビュー内から、他のビューを単にエコーします。

echo View::make('header'); //This will look for a view called header.php
于 2014-10-15T05:21:34.770 に答える