2016-01-09 6 views
2

Я использую набор данных по каждому маршруту. Есть ли способ, чтобы передать эти данные в всех маршрутов без указания данных по каждому маршруту, например:Передача данных на все маршруты?

Route::get('/', function() 
{ 
    $data = Data::all(); 

    return View::make('index')->with('data', $data); 
}); 

Route::get('/another', function() 
{ 
    $data = Data::all(); 

    return View::make('another')->with('data', $data); 
}); 
+0

Вы передаете данные на мнения, а не маршрутам - просто быть ясно! Хотя это возможно с помощью методов, описанных ниже, я не думаю, что это очень хорошая идея, чтобы данные Eloquent были общедоступными. Некоторые базовые настройки, такие как текущий язык - это хороший кандидат. Подумайте об этом - даже если одному из ваших маршрутов вообще не нужна база данных (например, статическая страница), из-за вашей переменной $ data это сделает запрос БД. Это тоже небезопасно. Если вы этого абсолютно хотите, сделайте по крайней мере группу маршрутизации, чтобы только определенные маршруты предварительно заполнили эту переменную. –

ответ

2

Вы можете использовать view()->share() в поставщике услуг, например, так:

view()->share('key', 'value'); 

После этого вы сможете получить доступ к value, используя {{ key }} во всех ваших взглядах.

Вы можете поместить его в метод boot() по умолчанию AppServiceProvider.

3

view composers.

View::composer('profile', function($view) 
{ 
    $view->with('count', User::count()); 
}); 

Теперь каждый раз, когда profile вид оказывается, данные count будет связан с точкой зрения.

Кроме того, необходимо назначить композитор многих взглядов, так что вы можете просто использовать ['profile', 'dashboard'] вместо 'profile'.

Или вы можете share a data с одной функции:

View::share('name', 'Steve'); 
Смежные вопросы