Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查symfony2中的路由_Php_Symfony_Symfony Routing - Fatal编程技术网

Php 检查symfony2中的路由

Php 检查symfony2中的路由,php,symfony,symfony-routing,Php,Symfony,Symfony Routing,我想学习symfony并开始创建一个小应用程序。我有一个关于路线的问题。因此,我的项目中有以下路线: /admin/homepage,/admin/news,admin/galery 否如果我在url/admin中写入,则此路由不存在,并且我将获取为错误未找到“get/admin/”的路由。是否存在一种检查路由是否不存在并重定向到另一个路由的方法,例如?提前谢谢,我的英语很抱歉 我的路线: news_all: path: /news/all/{page} defaults: { _control

我想学习symfony并开始创建一个小应用程序。我有一个关于路线的问题。因此,我的项目中有以下路线:

/admin/homepage
/admin/news
admin/galery

否如果我在url
/admin
中写入,则此路由不存在,并且我将获取为错误
未找到“get/admin/”
的路由。是否存在一种检查路由是否不存在并重定向到另一个路由的方法,例如?提前谢谢,我的英语很抱歉 我的路线:

news_all:
path: /news/all/{page}
defaults: { _controller: AppAdminBundle:News:all, page: 1 }
requirements:
    page: \d+
    _method:  GET|POST
news_add:
path: /news/add
defaults: { _controller: AppAdminBundle:News:add }

在您的情况下,最好的解决方案是覆盖默认的
ExceptionController
,并在其中添加自定义逻辑,例如重定向到其他页面-根据文档:

注:
当然,除了从头开始创建一个新的异常控制器之外,您还可以扩展默认的
ExceptionController
。在这种情况下,您可能希望重写
showAction()
findTemplate()
方法中的一个或两个。后者定位要使用的模板。

在您的情况下,最好的解决方案是覆盖默认的
ExceptionController
并在那里添加自定义逻辑,例如重定向到其他页面-根据文档:

注:
当然,除了从头开始创建一个新的异常控制器之外,您还可以扩展默认的
ExceptionController
。在这种情况下,您可能希望重写
showAction()
findTemplate()
方法中的一个或两个。后者定位要使用的模板。

Symfony的好做法是使用注释在控制器中设置rout

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

此外,通过注释,您可以为整个控制器设置路由。 对你来说,这就是你想要的

/**
* @Route("/admin")
*/
class NewsController extends Controller
{
    /**
     * @Route("/news/add", name="news_add")
     */
    public function addAction()
    {
        // ...
    }
}
还有,我建议你看看

另外,为了回答您的问题,我认为您可以定制一个细枝函数(查看更多信息)。用于检查给定名称是否为有效路由的函数:

function routeExists($name)
{
    // I assume that you have a link to the container in your twig extension class
    $router = $this->container->get('router');
    return (null === $router->getRouteCollection()->get($name)) ? false : true;
}

Symfony的良好实践是使用注释在控制器中设置rout

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

此外,通过注释,您可以为整个控制器设置路由。 对你来说,这就是你想要的

/**
* @Route("/admin")
*/
class NewsController extends Controller
{
    /**
     * @Route("/news/add", name="news_add")
     */
    public function addAction()
    {
        // ...
    }
}
还有,我建议你看看

另外,为了回答您的问题,我认为您可以定制一个细枝函数(查看更多信息)。用于检查给定名称是否为有效路由的函数:

function routeExists($name)
{
    // I assume that you have a link to the container in your twig extension class
    $router = $this->container->get('router');
    return (null === $router->getRouteCollection()->get($name)) ? false : true;
}

您可以添加
索引操作
并在其中添加重定向到所需功能。您是如何在控制器中定义路由的?我编辑了问题您可以添加
索引操作
并在其中添加重定向到所需功能。您是如何在控制器中定义路由的?我编辑了问题抱歉,但我不理解重定向是如何进行的当您访问不存在的路由时,
HttpNotFoundException
被激发,然后异常被
Symfony2
异常侦听器捕获,并调用
exceptionController
。你所要做的就是实现你的自定义
例外控制器
,并使用简单的
$this->RedirectToToRoute('your_route')
将用户重定向到正确的路由。对不起,我不明白当你访问一条不存在的路由时,如果我访问一条不存在的路由,将如何进行重定向,
HttpNotFoundException
被激发,然后异常被
Symfony2
异常侦听器捕获,并将调用
exceptionController
。您所要做的就是实现您的自定义
例外控制器
,并使用简单的
$this->redirectToRoute(“您的路径”)
将用户重定向到正确的路径。您能提供帮助吗?你能帮忙吗?