symfony 创建自定义404页面

ryevplcw  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(124)

我是新的symfony,我想生成或创建一个自定义404页面时,没有找到路由。
下面是我得到的错误:

FatalErrorException: Error: Call to a member function getDestinationURL() on a non-object in /home/smiles/Downloads/prototype/redirect-app/src/GS/RedirectBundle/Controller/RedirectController.php line 247

重定向功能:

public function redirectAction($source)
{        
    $em = $this->getDoctrine()->getManager();
    $repository = $em->getRepository('GSRedirectBundle:Redirect');
    $redirect = $repository->findOneBySourceURL($source);
    $destination_url = $redirect->getDestinationURL();
    return $this->redirect($destination_url);
}

我能做什么?

xurqigkl

xurqigkl1#

你得到的错误意味着$redirect变量是空的-没有实体被发现与这样的源URL。
你可以做全局错误页面http://symfony.com/doc/current/cookbook/controller/error_pages.html,但你也可以通过检查实体是否被找到来解决它,这在这样的情况下非常重要,例如:

public function redirectAction($source)
{        
    $em = $this->getDoctrine()->getManager();
    $repository = $em->getRepository('GSRedirectBundle:Redirect');
    $redirect = $repository->findOneBySourceURL($source);
    if (null == $redirect) {

        return $this->redirect('my_resource_not_found_route');
    }
    $destination_url = $redirect->getDestinationURL();

    return $this->redirect($destination_url);
}
bvjveswy

bvjveswy2#

您需要创建一个文件app/Resources/TwigBundle/views/Exception/error.html.twig,在那里您可以放置自定义的错误页面。
您可以在http://symfony.com/doc/current/cookbook/controller/error_pages.html找到更多信息。

相关问题