* redirect to single awardee from the menu, if there is only one in a year
This commit is contained in:
parent
03f8116bd2
commit
622a4e1ebb
@ -9,6 +9,8 @@ use Psr\Http\Message\ResponseInterface;
|
|||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Zend\Diactoros\Response\HtmlResponse;
|
use Zend\Diactoros\Response\HtmlResponse;
|
||||||
|
use Zend\Diactoros\Response\RedirectResponse;
|
||||||
|
use Zend\Expressive\Helper\UrlHelper;
|
||||||
use Zend\Expressive\Template\TemplateRendererInterface;
|
use Zend\Expressive\Template\TemplateRendererInterface;
|
||||||
|
|
||||||
class AwardeeHandler implements RequestHandlerInterface
|
class AwardeeHandler implements RequestHandlerInterface
|
||||||
@ -19,18 +21,32 @@ class AwardeeHandler implements RequestHandlerInterface
|
|||||||
/** @var AwardeeManager */
|
/** @var AwardeeManager */
|
||||||
private $awardeeManager;
|
private $awardeeManager;
|
||||||
|
|
||||||
|
/** @var UrlHelper */
|
||||||
|
private $urlHelper;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
TemplateRendererInterface $template,
|
TemplateRendererInterface $template,
|
||||||
AwardeeManager $awardeeManager
|
AwardeeManager $awardeeManager,
|
||||||
) {
|
UrlHelper $urlHelper
|
||||||
|
)
|
||||||
|
{
|
||||||
$this->template = $template;
|
$this->template = $template;
|
||||||
$this->awardeeManager = $awardeeManager;
|
$this->awardeeManager = $awardeeManager;
|
||||||
|
$this->urlHelper = $urlHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(ServerRequestInterface $request) : ResponseInterface
|
public function handle(ServerRequestInterface $request): ResponseInterface
|
||||||
{
|
{
|
||||||
$year = $request->getAttribute('year');
|
$year = $request->getAttribute('year');
|
||||||
$awardees = $this->awardeeManager->getJudgesByYear((int)$year);
|
$awardees = $this->awardeeManager->getJudgesByYear((int)$year);
|
||||||
|
|
||||||
|
if (count($awardees) === 1) {
|
||||||
|
$url = $this->urlHelper->generate('awardee', [
|
||||||
|
'slug' => $awardees[0]->getSlug(),
|
||||||
|
]);
|
||||||
|
return new RedirectResponse($url);
|
||||||
|
}
|
||||||
|
|
||||||
return new HtmlResponse($this->template->render("app::awardees", [
|
return new HtmlResponse($this->template->render("app::awardees", [
|
||||||
'year' => $year,
|
'year' => $year,
|
||||||
'awardees' => $awardees,
|
'awardees' => $awardees,
|
||||||
|
|||||||
@ -7,6 +7,7 @@ namespace App\Handler;
|
|||||||
use App\Service\AwardeeManager;
|
use App\Service\AwardeeManager;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
|
use Zend\Expressive\Helper\UrlHelper;
|
||||||
use Zend\Expressive\Template\TemplateRendererInterface;
|
use Zend\Expressive\Template\TemplateRendererInterface;
|
||||||
|
|
||||||
class AwardeeHandlerFactory
|
class AwardeeHandlerFactory
|
||||||
@ -15,6 +16,7 @@ class AwardeeHandlerFactory
|
|||||||
{
|
{
|
||||||
$template = $container->get(TemplateRendererInterface::class);
|
$template = $container->get(TemplateRendererInterface::class);
|
||||||
$awardeeManager = $container->get(AwardeeManager::class);
|
$awardeeManager = $container->get(AwardeeManager::class);
|
||||||
return new AwardeeHandler($template, $awardeeManager);
|
$urlHelper = $container->get(UrlHelper::class);
|
||||||
|
return new AwardeeHandler($template, $awardeeManager, $urlHelper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user