extbase未找到异常重定向到404默认页面

时间:2016-09-19 12:41:33

标签: typo3 fluid typo3-7.6.x

我有一个扩展程序,当我使用不存在或不存在的记录ID调用此扩展名时,我会收到异常Object of type My\Model\... with identity "1035" not found.

页面本身的标题状态为500。

在这种情况下,我想要显示的是默认的404页面。这可能吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我猜你正在使用像

这样的方法
public function detailAction(\YourVendor\Ext\Domain\Model\MyModel $model)

在这种情况下,它并不那么容易,因为异常已经在extbase的核心中被抛出。您可以查看我为news extension

解决的问题
   /**
     * @param RequestInterface $request
     * @param ResponseInterface $response
     * @throws \Exception
     */
    public function processRequest(RequestInterface $request, ResponseInterface $response)
    {
        try {
            parent::processRequest($request, $response);
        } catch (\Exception $exception) {
            $this->handleKnownExceptionsElseThrowAgain($exception);
        }
    }
    /**
     * @param \Exception $exception
     * @throws \Exception
     */
    private function handleKnownExceptionsElseThrowAgain(\Exception $exception)
    {
        $previousException = $exception->getPrevious();
        if (
            $this->actionMethodName === 'detailAction'
            && $previousException instanceof \TYPO3\CMS\Extbase\Property\Exception
            && isset($this->settings['detail']['errorHandling'])
        ) {
            $this->handleNoNewsFoundError($this->settings['detail']['errorHandling']);
        } else {
            throw $exception;
        }
    }

在方法handleNoNewsFoundError中,您可以执行任何您想要的操作,例如致电$GLOBALS['TSFE']->pageNotFoundAndExit('No news entry found.');

答案 1 :(得分:0)

未经测试,但是从逻辑POV中你应该捕获异常,然后让你的控制器决定做什么(在你的情况下:显示404页面)。