2015-05-18 3 views
1

В моем приложении навигации скомпилирована с помощью Laravel ServiceProvider compose() метода:Laravel загрузки() служба: не может получить доступ к переменным

view()->composer('partials.nav', function($view) { 
    $navData = // retrieve categories from DB... 
    $view->with($navData); 
}); 

я получить переменную $navData к моим nav.blade.php и компилировать навигацию успешно. Однако некоторые из данных, передаваемых в навигацию я хочу использовать на странице, @includes навигации, например page.blade.php:

@include('partials.nav') 

<div id="main"> 
{{ $navData['category'] }} 
</div> 

Но я бросаю ошибку: Undefined variable: $navData. Есть ли способ получить доступ к этой переменной за пределами nav.blade.php без каких-либо дополнительных вызовов?

ответ

0

Вы используете $navData в page.blade.php, а не в partials.nav. Таким образом, чтобы сделать его работу заменить

view()->composer('partials.nav', function($view) { 

с

view()->composer('page.blade.php', function($view) { 

или

view()->composer('*', function($view) { 

, если вы хотите сделать $navData везде.

+0

Если я заменить ' 'partials.nav'' с'' page.blade.php'', то '$ navData' будет доступен только на' page.blade.php' , но мне нужно это на 'nav', которое включено во все страницы. Я попробовал '' * '', но он выдает ошибку. Я новичок в laravel, поэтому я мог бы получить что-то неправильно здесь – qwaz

+0

«Я попробовал« * », но это вызывает ошибку». - вставить здесь сообщение об ошибке –

+0

'FatalErrorException в строке NavigationComposer.php 13: Невозможно обновить приложение \ Http \ Composers \ list_categories() (ранее объявленное в C: \ project \ app \ Http \ Composers \ NavigationComposer.php: 13)'. Как только я изменяю '' * ''обратно на' 'partials.nav'', он работает нормально. – qwaz

0

использование этого

view()->composer('partials.nav', function($view) { 
$data['navData'] = // retrieve categories from DB... 
$view->with($data); 
}); 
Смежные вопросы