Передача переменных в несколько представлений в 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);
}
Другие вопросы по тегам