Laravelブレードでinclude
を実行しようとしましたが、問題は変数を渡すことができないことです。次のコード例です:
file_include.blade.php
<?php
$myvar = "some text";
main.blade.php
@include('file_include')
{{$myvar}}
ファイルを実行すると、「Undefined variable:myvar」というエラーが返されます。だから、インクルードファイルからメインファイルに変数を渡すにはどうすればよいですか?
ありがとうございました。
なぜインクルードから呼び出しテンプレートに渡すのですか?呼び出し元のテンプレートで必要な場合は、そこで作成し、次のように含まれているテンプレートに渡します。
@include('view.name', array('some'=>'data'))
http://laravel.com/docs/templates の上記のコードスニペット
残念ながらLaravelブレードエンジンはあなたが期待したものをサポートしていません!
ソリューション1-Laravel Blade Engine
なし
ステップa:
から
file_include.blade.php
に
file_include.php
ステップb:
main.blade.php
<?php
include('app/views/file_include.php')
?>
{{$myvar}}
ソリューション2 with Laravel Blade Engine
routes.php
$data = array(
'data1' => "one",
'data2' => "two",
);
View::share('data', $data);
このようにAny View
から$ data配列にアクセスします
{{ $data['data1'] }}
出力
one
Bladeは、Laravelのテンプレートエンジンです。そのため、コントローラーから値を渡すか、テスト目的でroutes.phpで定義してください。
@includeは、サブビューを含めるために使用されます。
Laravel Bladeテンプレート。@include
を使用してテンプレートを含めると、親ビュー(定義されたビュー)からすべての変数を継承します。親スコープの子ビューで定義された変数を使用できないと思います。変数を親が使用できるようにするには、View::share($variableName, $variableValue)
を使用してみてください。
このシナリオでは$myvar
は、include呼び出しのローカルスコープでのみ使用できます。
コントローラーから変数を直接送信してみませんか?
古典的なPHP変数を本当に変更したい場合に必要です(それは参照によって自動的に行われます)