如何在Zend Expressive中引发404错误?

时间:2018-06-20 11:37:25

标签: php zend-framework zend-expressive

我有问题。 没有$ item时,我需要抛出404错误(请参见代码)。

class HomeHandler implements RequestHandlerInterface
{
    private $template;
    private $dataService;

    public function __construct(
        Template\TemplateRendererInterface $template = null, 
        DataServiceInterface $dataService
    ) {
        $this->template = $template;
        $this->dataService = $dataService;
    }

    public function handle(ServerRequestInterface $request) : ResponseInterface
    {
        $alias = $request->getAttribute('alias', '');

        $item = $this->dataService->getItem($alias);

        if(!isset($item)) {
            // Here you need to throw 404 error
        }

        return new HtmlResponse($this->template->render('app::home-page', $item));
    }
}

我使用Zend Expressive 3。

感谢您的任何想法

1 个答案:

答案 0 :(得分:2)

您可以返回带有特定状态代码的HTML响应:

if (!$item) {
    return new HtmlResponse($this->template->render('error::404'), 404);
}

调整模板以使其指向适当的位置。