gpt4 book ai didi

路由中参数之间的 Symfony2 字符

转载 作者:行者123 更新时间:2023-12-04 08:47:53 25 4
gpt4 key购买 nike

所以我有这条路线

路径:/view/{category}-{subcategory}

我正在尝试在我的 Twig 中渲染这条路线

href="{{ path('my_route', {category: cat.slug, subcategory: sub.slug }) }}"

但是 symfony 向我抛出这个错误

An exception has been thrown during the rendering of a template ("Parameter "category" for route "my_route" must match "[^/-]++" ("food-cheap" given)

不是应该在设置真实参数时自动生成-字符吗?如果我将 - 更改为 / 它会起作用,但我不想使用斜杠,因为它不是 category 中的 URI。

如果我用这个也能用

要求:
类别:“.*”

但是使用 slugs(因为这是重点)作为参数,会变得疯狂。

例如类别:某物子类别:超大号

URI 应该是 /view/something-super-size 但 Symfony2 是这么说的

类别 = something-super

子类别 = 尺寸

因为一切都有 - 并且它不知道在正则表达式模式中停止的位置。

我发现了一个奇怪的行为......

如果我手动输入 URL

http://localhost/view/something-super-size

它正确地进入它的 Controller ,没有问题并且没有使用要求所以问题可能出在{{ path() }} 方法...

最佳答案

要使您的路线使用破折号作为分段分隔符,请像这样声明您的路线:

my_route:
path: /view/{category}-{subcategory}
defaults:
_controller: YourBundle:Controller:method
requirements:
category: "[a-zA-Z1-9\-_\/]+"

现在使用时,破折号会自动添加到您的参数之间
href="{{ path('my_route', {category: cat.slug, subcategory: sub.slug }) }}"

编辑

更准确地说,对于给定的正则表达式,破折号将被视为 uri 段分隔符,并且不会成为参数的一部分。
参数完整(不包含-),当您使用path方法生成url时,-会自动添加参数。正则表达式只是让它工作。

See it in action

关于路由中参数之间的 Symfony2 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com