LoginSignup
10
11

More than 3 years have passed since last update.

Laravel @include したファイルで変数の値を表示させる方法

Last updated at Posted at 2020-03-04

Laravel6 で @includeしたファイルに引数を渡して、include先でデータ表示させたい場合

コードを使いまわしたいときって、部分的なviewファイルを用意して別の複数ファイルから呼び出したくなりますよね。
そんなときに @include が便利です。

公式ドキュメントでは
includeの呼び出し元の記述方法については明記されています。

@include('view.name', ['some' => 'data'])

これを応用して、 template.blade.php ファイルに $data 変数を渡して読み込みたいときは以下のように記述すればいいです。

呼出し元の記述方法
@include('template', ['data' => $data])

読込まれるtemplateビューファイル

tamplate.blade.php
<!DOCTYPE html>
 <body>
   今日の日付は{{ $data }}です
 </body>
</html>

と、ここまではすんなり理解できます。

しかし、肝心の読込んだ templateビューで$dataは下記の様にコードがそのまま表示され、
Laravelの記述方式では表示できない。。
image.png

なんでや?
ちなみに {{ $data }}echo $data;の省略形なので表示されていいはずです。
少しファイルをいじって、試しに@php~@endphpで記述してみました。

tamplate.blade.php
<!DOCTYPE html>
 <body>
   今日の日付は@php echo $data; @endphpです。
 </body>
</html>

しかし、これも適切に読み込んでくれず

image.png

となりました。

つまり、includeされるビューファイルを

Laravel表記では読み込んでくれない。

というわけで
標準のphp形式でコードを書いてみました。

tamplate.blade.php
<!DOCTYPE html>
 <body>
   今日の日付は<?php echo $data; ?>です。
 </body>
</html>

とすると、
image.png

無事、表示されました!

includeされる側での記述方法について明記されていません。

これは、こういう仕様なのでしょうか?
「そんなことないはず!」
という方は@includeする際の注意点を教えてもらえると嬉しいです。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11