Ensured a generic template is used to render generic 404 errors, and a more specific one to render 'invalid short url' errors

This commit is contained in:
Alejandro Celaya
2017-10-13 12:22:19 +02:00
parent c12e13dfd7
commit ea76092681
11 changed files with 86 additions and 24 deletions

View File

@@ -12,6 +12,8 @@ use Zend\Expressive\Template\TemplateRendererInterface;
class NotFoundDelegate implements DelegateInterface
{
const NOT_FOUND_TEMPLATE = 'notFoundTemplate';
/**
* @var TemplateRendererInterface
*/
@@ -19,12 +21,12 @@ class NotFoundDelegate implements DelegateInterface
/**
* @var string
*/
private $template;
private $defaultTemplate;
public function __construct(TemplateRendererInterface $renderer, string $template = 'ShlinkCore::error/404')
public function __construct(TemplateRendererInterface $renderer, string $defaultTemplate = 'ShlinkCore::error/404')
{
$this->renderer = $renderer;
$this->template = $template;
$this->defaultTemplate = $defaultTemplate;
}
/**
@@ -49,6 +51,7 @@ class NotFoundDelegate implements DelegateInterface
], $status);
}
return new Response\HtmlResponse($this->renderer->render($this->template, ['request' => $request]), $status);
$notFoundTemplate = $request->getAttribute(self::NOT_FOUND_TEMPLATE, $this->defaultTemplate);
return new Response\HtmlResponse($this->renderer->render($notFoundTemplate, ['request' => $request]), $status);
}
}