4

我只是对路由配置中的 symfony 正则表达式模式有点麻烦。

我想同时匹配/keyword/keyword/URL。/字符是可选的。
这是我的模式:

pattern:  /{keyword}/?

/keyword/匹配模式,而不匹配/keyword

我应该如何写模式?

4

3 回答 3

5

如果添加尾部斜杠,则它是可选的——用户将从不带斜杠的路径重定向到带有斜杠的路径。因此,该/{keyword}/模式适用于/{keyword}/{keyword}/

然而,如果你定义它时不带斜杠/{keyword}——它只会起作用/{keyword}

于 2012-10-04T06:25:50.890 回答
0

我认为您不能在路线中使用 RegEx 模式。keyword可能需要具有特定的 RegEx 模式,但这是另一回事。

如果您使用的是 YML,那么我认为最好的做法是拥有两条不同的路线:

route1:
    pattern: /{keyword}
    ...

route2:
    pattern: /{keyword}/
    ...

如果您使用注释,您可以将它们都放在控制器操作的顶部:

/**
* @Route("/{keyword}");
* @Route("/{keyword}/");
*/
于 2012-10-03T14:38:01.503 回答
0

在您的功能所在的控制器中使用注释:

/**
 * Function
 * 
 * 
 * @Route("your/route/{keyword}")
 * @Route("your/route/{keyword}/")
 */

您将能够使用这两条路线访问此功能。

于 2012-10-03T14:38:20.130 回答