Передача переменных в несколько представлений в laravel
Я хочу передать переменную нескольким представлениям бу, когда я использую метод разделения в представлении. Он говорит, что метод общего доступа не найден в View.
Как вы говорите, я использую его, и я тоже пробую композитор, но, как бы я ни старался, он не работает, не могли бы вы привести простой пример этого действия?
Мой контроллер categorycontroller.php
public function site(){
$data = array();
$data['subcategories'] = SubCategory::all();
$data['categories'] = Category::all();
return view('template.sitemap',compact("data"));
}
Мой маршрут web.php
Route::get('/404.html', function () {
return view('template/404');
})->name('404.html');
Route::get('404.html','CategoryController@site')->name('404');
Route::get('/sitemap.html', function () {
return view('template/sitemap');
})->name('sitemap.html');
Route::get('sitemap.html','CategoryController@site')->name('sitemap');
Что ты предлагаешь?
1 ответ
Решение
Вы можете сделать переменную доступной в нескольких представлениях, например, одним из следующих способов:
AppServiceProvider (ссылка: https://laravel.com/docs/5.6/providers) с ViewComposer (ссылка: https://laravel.com/docs/master/views)
Вам нужно добавить в свой метод ServiceProvider boot() что-то похожее на это:
public function boot()
{
View::share('variable_name', 'some_value_here');
}
Или внутри контроллера:
public function __construct() {
$something = 'just a test';
View::share('something', $something);
}