Laravel 4 Blade @include variable
Я пытался сделать include
с лезвием Laravel, но проблема в том, что он не может передать переменную. Вот мой пример кода:
file_include.blade.php
<?php
$myvar = "some text";
main.blade.php
@include('file_include')
{{$myvar}}
Когда я запускаю файл, он возвращает ошибку "Undefined variable: myvar". Итак, как передать переменную из файла include в основной файл?
Спасибо.
Ответы
Ответ 1
Зачем вам передавать его из include в вызывающий? Если вам нужно это в шаблоне вызова, создайте его там, а затем передайте его в включенный шаблон следующим образом:
@include('view.name', array('some'=>'data'))
Над фрагментом кода из http://laravel.com/docs/templates
Ответ 2
К сожалению, двигатель Laravel Blade не поддерживает то, что вы ожидали! Но немного традиционный способ добиться этого!
РЕШЕНИЕ 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 с Laravel Blade Engine
routes.php
$data = array(
'data1' => "one",
'data2' => "two",
);
View::share('data', $data);
Доступ к массиву данных $from Any View
, подобному этому
{{ $data['data1'] }}
Выход
one
Ответ 3
Blade - это механизм шаблонов для Laravel. Поэтому попробуйте передать значение из контроллера, или вы можете определить его в route.php для целей тестирования.
@include используется для включения под-представлений.
Ответ 4
Я думаю, вы должны понимать переменную область действия в шаблоне Laravel Blade. Включение шаблона с помощью @include
наследует все переменные из его родительского представления (вид, где он был определен). Но я думаю, вы не можете использовать свои определенные переменные в своем дочернем представлении в родительской области. Если вы хотите, чтобы ваша переменная была доступна родительской, попробуйте использовать View::share($variableName, $variableValue)
, она будет доступна для всех просмотров, как ожидалось.
Ответ 5
В этом сценарии $myvar
будет доступен только в локальной области входящего вызова.
Почему вы не отправляете переменную напрямую с контроллера?
Ответ 6
Я предлагаю вам сделать классический PHP, если вы действительно хотите изменить свою переменную (тогда она автоматически по ссылке)