我正在使用/学习Laravel 5.6,并想知道这是否是尝试从数据库完成动态页面的最佳方法。
我采取的方法有效,但我觉得可以改进,特别是每次请求都必须检索导航栏的页面。
我在web.php中有一条路线
Route::get('/', 'PageController@index')->name('index');
Route::get('/{page}', 'PageController@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
现在我的问题是所有其他控制器我每次都要从数据库中获取页面信息,这似乎效率低下。
任何建议都将不胜感激。提前谢谢。
答案 0 :(得分:1)
您可以adding View::share('key', 'value');
in the boot method of a service provider自动与每个视图共享您的网页数据。或者,您可以创建view composer。
答案 1 :(得分:0)
一个布局刀片。 产生标题
<title>@yield('page-title')</title>
然后查看
//使用DB中的php处理标题
然后使用
显示@section('page-title')
{{$page_title}}
@endsection