File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Pages/PageController.php
<?php
namespace App\Pages;
use App\Base\Controller;
use App\Categories\Kms\CategoryTreeService;
use App\Categories\Models\Category;
use App\Pages\Models\Page;
use Illuminate\Support\Str;
final class PageController extends Controller
{
/**
* @param Page $page
* @return \Illuminate\Contracts\View\View
*/
public function show(Page $page)
{
$page = $this->links->{$page->code_name}->node ?? null;
if(!$page) throw new \RuntimeException('There is no page with code name ' . $page->code_name . ' in the links object');
// Generate view name based on the code name
$viewName = 'templates.' . $page->code_name;
if(!view()->exists($viewName)) $viewName = 'templates.default';
//Prepare the data that is always send to the views
$viewData = [
'links' => $this->links,
'page' => $page,
'showAllLink' => true,
];
if($page->code_name == 'home') {
// Fetch categories for assortment on homepage
$rootCategory = (new CategoryTreeService())->treeWithTranslationsLinksAndActiveStates(1);
$categories = collect($rootCategory->getChildren())->sortBy(function(Category $category) {
return $category->getDisplayName();
});
$viewData['categories'] = $categories;
}
// Return view
return view($viewName, $viewData);
}
}