【问题标题】:Symfony2 Request extra query parameter missingSymfony2请求额外的查询参数丢失
【发布时间】:2012-10-27 23:57:01
【问题描述】:

我需要使用我的路由 site_edit 和一个额外的查询参数 'company'=1。路线如下:

@Route("/_sys/site/edit/{id}", name="site_edit", defaults={"id"=null})

Symfony2 生成链接/_sys/site/edit?comp=1,这对我来说看起来不错。虽然 $_GET 是数组('comp'=>'1'),但它可以执行操作,但 Request#query 是空的。 如果我将查询字符串调整为/_sys/site/edit/?comp=1,则找不到匹配的路由。如果我为 {id} 插入一些值,例如/_sys/site/edit/new?comp=1 那么一切都很好($id="new" 和 Request#query 是 array('comp'=>'1') 但这种情况是应用程序逻辑不能容忍的,我不能改变。

我需要一个结构非常相似的路由,其中​​恰好存在一个参数 comp 和 id。所以需要将 url 生成为 [twig] url('site_edit', {'id':positiveInteger})url('site_edit', {'comp':positiveInteger})

这是一个错误吗?恕我直言,/_sys/site/edit?comp=1 之前的部分?应该使用 {id}=null (ok) 和之后的部分来启动操作?应确保 Request#query-get('comp') 产生 '1'(失败)。

【问题讨论】:

    标签: symfony request


    【解决方案1】:

    怎么样

    @Route("/_sys/site/edit/{id}/comp/{comp}", name="site_edit", 
            defaults={"id"=null})
    

    您可以为 comp 分配一个默认值,如果您愿意,可以将其视为 emtpy。

    【讨论】:

    • 我认为,在这种情况下,您不能调用 /_sys/site/edit//comp/1(注意双精度 /)。至少我在为我的AJAX 请求生成路由时遇到了这种问题......(虽然我有defaultsrequirements 路由参数)
    • id 在这种情况下默认为 null
    • /_sys/site/edit/1 不会执行该操作。如果这是 symfony 的弱点,我宁愿直接使用 $_GET 而不是像 /_sys/site/edit/1/comp 这样的愚蠢 url 来解决问题。
    • "//" 通常会导致 URL 中间出现问题,根据我的经验,应尽可能避免。你能创建单独的路由来满足变化并将它们都指向同一个控制器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2011-12-12
    • 2012-11-13
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多