ما برای اینکه برای صفحات خود بصورت هوشمند قالب انتخاب کنیم با یک سری معادلات هوشمند و با استفاده view exists می توانید بصورت هوشمندانه و سیستمی قالب برای صفحات خود انتخاب کنید. ابتدا در view یک دایرکتوری به نام pages اضافه می کنیم. سپس کدهای خود را در routes.php ایجاد می کنیم:
Route::get({page},function($slug){
$page=App\Page::findBySlug($slug);
if($page->slug=='about-us'){
return view('about-us',compact('page'));
}
if($page->slug=='contact-us'){
return view('contact-us',compact('page'));
}
return view('default-page',compact('page'));
});
حالا کد بالا را بهینه می کنیم. با کد زیر تا بینهایت قالب را بصورت داینامیک می توانیم اضافه کنیم:
Route::get({page},function($slug){
$page=App\Page::findBySlug($slug);
if(view()->exists("pages/{$page->slug}"){
return view("pages/{$page->slug}",compact('page'));
}
return view('default-page',compact('page'));
});
حالا باز هم کد خود را بهینه می کنیم:
Route::get({page},function($slug){
$page=App\Page::findBySlug($slug);
$view="pages/{$page->slug}";
if(view()->exists($view){
return view($view,compact('page'));
}
return view('default-page',compact('page'));
});
باز هم بهینه می کنیم:
Route::get({page},function($slug){
$page=App\Page::findBySlug($slug);
$view="pages/{$page->slug}";
if(!view()->exists($view){
$view='default-page';
}
return view($view,compact('page'));
});
حالا با لاراول 5.5 این کار را انجام می دهیم:
Route::get({page},function($slug){
$page=App\Page::findBySlug($slug);
view()->first([
"pages/{$page->slug}",
"default-page"
],compact('page'))
});