Laravel 4 Blade @include variable

纵饮孤独 提交于 2019-12-03 14:38:43

问题


I was trying to do include with Laravel blade, but the problem is it can't pass the variable. Here's my example code:

file_include.blade.php

<?php
  $myvar = "some text";

main.blade.php

@include('file_include')
{{$myvar}}

When I run the file, it return the error "Undefined variable: myvar". So, how can I pass the variable from the include file to the main file?

Thank you.


回答1:


Why would you pass it from the include to the calling template? If you need it in the calling template, create it there, then pass it into the included template like this:

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

Above code snippet from http://laravel.com/docs/templates




回答2:


Unfortunately Laravel Blade engine doesn't support what you expected!.But a little traditional way you can achieve this!

SOLUTION 1 - without Laravel Blade Engine

Step a:

from

file_include.blade.php

to

file_include.php

Step b:

main.blade.php

<?php 
     include('app/views/file_include.php')
?>
{{$myvar}}

SOLUTION 2 with Laravel Blade Engine

routes.php

$data = array(
'data1'         => "one",
'data2'         => "two",
);

View::share('data', $data); 

Access $data array from Any View like this

{{ $data['data1'] }}

Output

one



回答3:


Blade is a Template Engine for Laravel. So try passing the value from the controller or you may define it in the routes.php for testing purposes.

@include is used to include sub-views.




回答4:


I think you must understand the variable scope in Laravel Blade template. Including a template using @include will inherit all variables from its parent view(the view where it was defined). But I guess you can't use your defined variables in your child view at the parent scope. If you want your variable be available to the parent try use View::share($variableName, $variableValue) it will be available to all views as expected.




回答5:


In this scenarion $myvar would be available only on the local scope of the include call.

Why don't you send the variable directly from the controller?




回答6:


I suggest you do a classic PHP require if you really want to change your variable (then it's automatically by reference)



来源:https://stackoverflow.com/questions/21182399/laravel-4-blade-include-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!