在Symfony2中获取路由需求变量



为了创建我的web界面导航,我想从我的bundle的路由配置中获得一个变量。我在mybundle/Resources/config/routing.yml中定义了可用的页面。

mybundle_homepage:
  pattern:  /{_locale}/{branch}/{page}
  defaults: { _controller: mybundle:mycontroller:index, _locale: de, branch: x.x.x, page: start }
  requirements:
    _locale:  de|en
    page:     start|functions|events|constants|styleguide

现在我看了一下Symfony2 YAML解析器,我必须为它的静态方法parse: http://symfony.com/doc/2.0/reference/YAML.html提供一个文件路径

mycontroller.php

use SymfonyComponentYamlYaml;
class mycontroller extends Controller
{
  public function indexAction($_locale, $branch, $page)
  {
    $routing = Yaml::parse('../Resources/config/routing.yml');
    var_dump($routing);
  }
}

我想我可以这样做因为文件夹的层次结构看起来是这样的:

  • mybundle
    • 控制器
      • mycontroller.php
      • 配置
        • routing.yml

但是它不起作用。有什么想法或者其他方法来得到需求吗。从路由文件页数组?

认为,本

你应该能够在一个支持DI容器的类中访问router服务。所以,你可以这样写:

$routes = $this->container->get('router')->getRouteCollection();
$route = $routes->get('my_route_name');
print_r($route->getRequirements());

最新更新