在Symfony2中获取路由需求变量

时间:2011-10-10 14:48:23

标签: symfony yaml

为了为我创建一个导航webinterface我想从我的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 Parser,我必须提供一个文件路径静态方法解析http://symfony.com/doc/2.0/reference/YAML.html

mycontroller.php

use Symfony\Component\Yaml\Yaml;

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

我以为我可以这样做,因为文件夹hirarchy看起来像那样:

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

但它不起作用。从路由文件中获取requirements.page数组的任何想法或其他方法?

此致,Ben

1 个答案:

答案 0 :(得分:6)

您应该能够在识别DI容器的类中访问路由器服务。所以,你可以这样写:

$routes = $this->container->get('router')->getRouteCollection();

$route = $routes->get('my_route_name');
print_r($route->getRequirements());