如何在 Zend Expressive 中抛出 404 错误?

How to throw 404 error in a 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。

感谢您的任何想法

您可以 return HTML 具有特定状态代码的响应:

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

调整模板以指向合适的位置。