/** * @param ShowPostQuery $query */ public function handle(ShowPostQuery $query) { $requestInfo = $query->getRequestInfo(); try { $postData = $this->blogPostReadService->getPostDataByUrl($requestInfo->getUri()); $previousPost = $this->blogPostReadService->getPreviousPostOf($postData); $nextPost = $this->blogPostReadService->getNextPostOf($postData); $page = new ThemePage('Posts/Read/Pages/ShowPost.twig', ['post' => $postData, 'previous' => $previousPost, 'next' => $nextPost]); $page->respond(); } catch (BlogPostDataNotFound $e) { $page = new ThemePage('Blog/Read/Pages/Error404.twig', ['requestUri' => $requestInfo->getUri()], Http::NOT_FOUND); $page->respond(); } }