Я использую / изучаю Laravel 5.6 и задавался вопросом, лучший ли это подход для создания динамических страниц из базы данных.
Подход, который я использовал, работает, но я чувствую, что его можно улучшить, особенно если нужно извлекать страницы для панели навигации с каждым запросом.
У меня есть маршрут в web.php
Route::get('/', 'PageController@index')->name('index');
Route::get('/{page}', 'PageController@show');
Затем у меня есть контроллер страницы с функциями index и show.
public function index()
{
$pages = Page::all();
$posts = Post::latest('created_at')->paginate(2);
return view('index', compact('posts','pages'));
}
public function show($uri)
{
$pages = Page::all();
$page = Page::where('uri', $uri)->first();
return view('templates.page', compact('page','pages'));
}
Теперь в моем header.blade.php я показываю список таких страниц:
@foreach($pages as $page)
<li class = "nav-item">
<a class = "nav-link" href = "/{{ $page->uri }}">{{ $page->title }}</a>
</li>
@endforeach
Теперь моя проблема связана со всеми другими контроллерами, которые мне нужно каждый раз получать информацию о странице из базы данных, что кажется неэффективным.
Любой совет будет принят во внимание. Заранее спасибо.






Вы можете автоматически делиться данными своих страниц с каждым просмотром с помощью добавление View::share('key', 'value'); в метод загрузки поставщика услуг. В качестве альтернативы вы можете создать смотреть композитора.
один макет отвала. уступить титул по
<title>@yield('page-title')</title>
затем на просмотр,
// обрабатываем заголовок с использованием php из БД
затем отобразите с помощью
@section('page-title')
{{$page_title}}
@endsection