Laravel 5.5 автоматически загружает функцию для каждой страницы без вызова этой функции для каждого контроллера - PullRequest
0 голосов
/ 28 мая 2018

Я собираюсь создать динамическую левую навигацию (меню) для каждого пользователя.Я уже создал таблицу базы данных для того же.Кроме того, я сгенерировал структуру меню в зависимости от пользователя, вошедшего в систему. Левая навигация расположена как частичное представление (leftnav.blade.php).В настоящее время я передаю левые навигационные данные (сгенерированные из значений базы данных) в представление следующим образом:

$data['tree'] = $this->generateSiteTree(0); // left nav generated
$data['bla] = 'bla bla etc';
return view('Administrator.permission.index', $data);

Но я не хочу генерировать структуру меню для каждой страницы отдельно, написав один и тот же кодснова для другого контроллера.Я знаю, как создать вспомогательную функцию.У меня вопрос - как автоматически вызывать функцию для каждой страницы?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы можете создать композитор представления, чтобы заполнять данные в вашем ТОЛЬКО в левой навигационной панели.См. Эту документацию: https://laravel.com/docs/5.5/views#view-composers

В вашем app/Providers/AppServiceProvider.php вставьте этот код в функцию загрузки:

View::composer('leftnav', function ($view) {
    $view->with('tree', $this->users->count());
});

Не забудьте поставить это сверху:

use Illuminate\View\View;
0 голосов
/ 28 мая 2018

использование https://laravel.com/docs/5.6/views#sharing-data-with-all-views

public function boot()
    {
        View::share('tree', $this->generateSiteTree(0));
        View::share('bla', 'bla bla etc');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...