【问题标题】:Symfony routing with params with specific structure带有特定结构参数的 Symfony 路由
【发布时间】:2020-01-14 11:05:15
【问题描述】:

symfony中可以这样声明路由吗

/somestuff/{query}

query 的结构在哪里

string-with-minus-id000001

我希望能够将第一部分作为控制器中的属性,将第二部分作为 id。将路线定义为

/somestuff/{name}-id{id}

没用

【问题讨论】:

  • 你为什么要这样做???
  • 路由的客户需求
  • 您当然可以使用正则表达式来验证 string-with-minus-id000001 但我认为没有任何东西可以为您解析它。即使parameter conversion 功能也可能无济于事。您可能可以使用请求控制器侦听器进行解析并将名称和 id 注入请求对象。然后是用于生成 url 的类似内容。我想即使客户错了,他们也必须永远是对的。

标签: php regex symfony routing


【解决方案1】:

如果结构总是这样

/somestuff/{name}-id{id}

获取 nameid 的通用方法是

/**
 * @Route("/somestuff/{slug}")
 */
public function someAction(Request $request, $slug)
{
    $reversed = strrev($slug);
    $paramArray = explode('-', $reversed, 1); // limit
    $id = strrev($paramArray[0]);
    $name = strrev($paramArray[1]);
    // rest of code
}

【讨论】:

    【解决方案2】:

    我在注释中找到了一种方法,这是答案:

    @Route(
       "/somestuff/{name}-id{id}",
       methods={"GET"} ,
       name="route_name",
       defaults={"name"=""},
       requirements={"name"=".*?", "id"="\d+"}
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多