【问题标题】:Symfony2 : how to force a routing parameter not in pattern?Symfony2:如何强制路由参数不在模式中?
【发布时间】:2012-10-18 21:43:03
【问题描述】:

我想给一些路由规则添加一个参数xyz,但是pattern中没有指定这个参数,如下:

homepage:
    pattern:   /
    defaults:  { _controller: MyBundle:Page:home, xyz: true }

contact:
    pattern:   /contact
    defaults:  { _controller: MyBundle:Page:contact }

gallery:
    pattern:   /gallery
    defaults:  { _controller: MyBundle:Page:gallery, xyz: true }

我尝试了此路由配置,但在调用 homepagegallery URL 时,我的参数 xyz 未发布。

这是我的 Twig 页面(例如):

...
<a href="{{ path('gallery') }}">my test link</a>
...

结果是:

我的测试链接

我的例外是当我点击这个链接时,我的 xyz 参数会被发送。

知道为什么吗?

【问题讨论】:

    标签: symfony routing


    【解决方案1】:

    使用attributes参数包代替GET一个

    $request->attributes->get('xyz')
    

    【讨论】:

    • 您的回答表明我的问题不够清楚。所以我只是对其进行了编辑以使其更完整。
    • 好吧,你想知道什么?如何更改路由的模式以便可以发送数据?模式:/gallery/{xyz}
    • 我已经试过了...即使我按照你说的改变模式,我的Twig页面中的结果是一样的,没有提到我的xyz参数。
    • 路由中的“defaults”部分定义了相应字段的值,如果它们不是由请求提供的。要在链接中传递实际值,您必须使用下一个变体:{{ path('gallery', {'xyz': 'some_value'}) }}
    • 好的,我想知道是否可以直接在路由文件中定义它,而不是在 Twig 文件中...感谢您的回答!
    【解决方案2】:

    如果您将 $xyz 添加到控制器操作方法签名中,则 $xyz 将存在并可访问。

    public function homeAction($xyz) { // Code goes here }

    public function galleryAction($xyz) { // Code goes here }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多