从网址获取路由

时间:2011-11-22 15:06:19

标签: controller routes symfony

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

谢谢

3 个答案:

答案 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异常(例如,获取引用)。

https://stackoverflow.com/a/16506062/100675

中查看详情

答案 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'];
相关问题