Symfony 2 - Redirect()到指定页面

时间:2013-01-10 22:41:37

标签: symfony

如果出现404错误,我正尝试将Symfony重定向到另一条路由/404。在ExceptionController.php文件中,我正在查找错误代码404.当出现错误404时,重定向到my-domain.com/404。我想将我的用户重定向到另一个404页面是因为我的自定义404页面来自另一个包。

以下是我编写的代码。当我访问一个不存在的网站时,我会看到一个500服务器错误页面,而不是我预期的重定向404页面。我错过了什么吗?

if ($code == '404') {
    return $this->redirect("/404");
}

2 个答案:

答案 0 :(得分:2)

我看了一下,据我所知,它不可能有一个错误页面 束。它必须是app/Resources/views/Exception/error404.html.twig

中的网站范围

但是,您可以通过利用HttpFoundation组件

返回自定义响应
<?php

namespace Acme\WhateverBundle\Controller;

//...
use Symfony\Component\HttpFoundation\Response;

class MyController extends Controller
{
    //...
    public function takeAction()
    {
        //..

        if ($notFound) {
            $twig = $this->container->get('templating');

            $content = $twig->render('AcmeAnotherBundle:Exception:error404.html.twig');

            return new Response($content, 404, array('Content-Type', 'text/html'));   
        }

        // ...

        return $this->render('AcmeWhateverBundle:Default:index.html.twig');
    }
}

答案 1 :(得分:1)

您可以尝试使用Symfony的createNotFoundException()方法:

http://symfony.com/doc/2.0/book/controller.html#managing-errors-and-404-pages

不要重定向到404页面,而是在控制器中尝试:

throw $this->createNotFoundException('This page does not exist.');