【问题标题】:Get routing requirement variable in Symfony2在 Symfony2 中获取路由需求变量
【发布时间】:2011-12-04 14:23:53
【问题描述】:

为了为我的 web 界面创建导航,我想从我的包的路由配置中获取一个变量。我在 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 Symfony\Component\Yaml\Yaml;

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

我认为我可以这样做,因为文件夹层次结构看起来像这样:

  • 我的包
    • 控制器
      • mycontroller.php
    • 资源
      • 配置
        • routing.yml

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

问候,本

【问题讨论】:

    标签: symfony yaml


    【解决方案1】:

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

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

    【讨论】:

    • 工作就像一个魅力。谢谢!路由容器称为路由器而不是路由。 :)
    • 请问你想达到什么目标?获取路线的要求对我来说似乎有点奇怪。
    • 我想在可用页面的顶部创建一个导航栏
    • 好吧,我建议不要自己构建,而是看看KnpMenuBundle。它的工作非常非常好。
    • 请注意,这不会使用任何缓存,因此路由器会在您每次调用getRouteCollection()时加载您的所有路由
    猜你喜欢
    • 2016-04-13
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2012-05-12
    • 2015-07-21
    • 2015-12-20
    相关资源
    最近更新 更多