Подтвердить что ты не робот

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 в основной файл?

Спасибо.

4b9b3361

Ответ 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, если вы действительно хотите изменить свою переменную (тогда она автоматически по ссылке)