Не вижу переменную внутри представления содержимого в Laravel 4 с Blade

У меня проблема с пониманием того, как работают переменные в системе шаблонов Laravel, Blade. Я устанавливаю переменные в контроллере, я вижу их в первом виде, но не в следующем.

Я использую файл master.blade.php, который содержит верхний и нижний колонтитулы страницы, что дает содержимое посередине. Я могу использовать переменную внутри файла master.blade.php, но не внутри файла лезвия содержимого (переменная undefined).

Например, для страницы контактов:

ФУНКЦИЯ КОНТРОЛЛЕРА:

$ this- ›данные ['страница'] = контакт;

$ this- ›layout-› content = View :: make ('pages.contact');

$ this- ›layout-› with ('data', $ this- ›data);

MASTER.BLADE.PHP:

if ($ data ['страница'] == 'контакт')

{// сделаем что-нибудь, это работает}

@yield ('содержание')

КОНТАКТЫ.BLADE.PHP:

if ($ data ['страница'] == 'контакт')

{// сделай что-нибудь. ErrorException Неопределенная переменная: данные}

Я что-то упускаю или это известное ограничение?

Спасибо!


person tabacitu    schedule 04.11.2013    source источник


Ответы (1)


Проблема заключалась в том, что я передавал переменные только макету:

Вместо:

$ this- ›layout-› content = View :: make ('pages.contact');

$ this- ›layout-› with ('data', $ this- ›data);

Я исправил это с помощью:

$ this- ›layout-› content = View :: make ('pages.contact', array ('data' = ›$ this-› data));

$ this- ›layout-› with ('data', $ this- ›data);

Таким образом передаются переменные макету, но также и этому конкретному представлению.

Надеюсь, это кому-то поможет.

person tabacitu    schedule 04.11.2013