2 || count($parts) < 1 || (count($parts) === 1 && in_array($parts[0], self::$defaultRoutes)) ) { return $this->renderClient(); } // first try to match a channel, if none is found, fallback to rendering client side app try { if ($parts[0] === 'lists' && isset($parts[1])) { request()->merge(['channelType' => 'list']); $parts[0] = $parts[1]; $parts[1] = null; } if ($parts[0] === 'channel' && isset($parts[1])) { $parts[0] = $parts[1]; $parts[1] = null; } $slugOrId = $parts[0]; $restriction = $parts[1] ?? null; return $this->renderChannel($slugOrId, $restriction); } catch (ModelNotFoundException) { return $this->renderClient(); } } public function renderChannel(string $slugOrId, ?string $restriction = null) { $channel = app(Channel::class)->resolveRouteBinding($slugOrId); if ($restriction) { request()->merge(['restriction' => $restriction]); } return app(ChannelController::class)->show($channel); } public function renderClient() { // no need to prerender channels here, use base HomeController request()->route()->action['uses'] = HomeController::class . '@show'; return app(HomeController::class)->show(); } }