You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig的path()函数中动态使用不同参数名生成路由?

解决Twig中动态路由参数键名的问题

嘿,我懂你遇到的麻烦了——你想在Twig模板里动态指定路由参数的键名,而不是硬编码成固定的param,但当前的写法把模板表达式当成字符串直接输出了,才会出现{{ item.param }}=1918这种奇怪的查询参数。

正确的写法

Twig支持动态数组键的语法,你只需要把参数键用方括号[]包裹起来,就能让Twig先计算表达式的值,再作为键名使用:

<a href="{{ path('page_edit', { [item.param]: item.value }) }}">Submit</a>

为什么这样管用?

原来的写法{ '{{ item.param }}': item.value }里,'{{ item.param }}'是一个字符串字面量,Twig不会解析它,所以直接被编码成了URL里的%7B%7B+item.param+%7D%7D。而用[item.param]的话,Twig会先获取item.param的实际值(比如id),再把它作为路由参数的键,对应item.value(比如1918)来生成正确的路径。

额外注意点

要确保你的page_edit路由配置和动态键名匹配哦!比如如果item.param返回的是id,那路由得是类似这样的定义(以Symfony路由为例):

page_edit:
    path: /user/edit/{id}
    controller: App\Controller\UserController::edit

只有这样,path函数才会把参数值嵌入到路径中,生成你想要的http://localhost/mysite/web/app_dev.php/user/edit/1918,而不是查询参数形式。

内容的提问来源于stack exchange,提问作者Rob Bauer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:11