在 Symfony2 中,您知道如何从控制器中的网址查找路由吗? 我有这个例子:
$params = $router->match('/blog/my-blog-post');
// array('slug' => 'my-blog-post', '_controller' => 'AcmeBlogBundle:Blog:show')
$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
// /blog/my-blog-post
当我有blog_show
/blog/my-blog-post
谢谢
答案 0 :(得分:16)
我不知道你在$router
中拥有什么,但是使用路由器服务,我在这里得到了这个:
$this->get('router')->match('/')
array
'_controller' => string 'Namespace\Foo\MyController::indexAction'
'_route' => string 'home'
如果您想要当前页面的路径名称,只需从请求对象中读取它:$request->attributes->get('_route')
。
答案 1 :(得分:1)
我最近发现match()方法使用当前请求的HTTP METHOD来匹配请求。因此,如果您正在执行PUT请求,它将尝试将您给出的URL与PUT方法匹配,从而导致MethodNotAllowedException异常(例如,获取引用)。
中查看详情答案 2 :(得分:1)
如果使用绝对路径,您可以得到相同的错误,这是我在匹配引荐来源时所做的事情
$ref = str_replace("app_dev.php/", "", parse_url($request->headers->get('referer'),PHP_URL_PATH ));
$route = $this->container->get('router')->match($ref)['_route'];