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

Symfony3项目中含Twig链接的表单标签翻译方案咨询

解决Symfony3表单标签中带动态链接的翻译问题

你的问题出在Twig语法的错误使用上——在trans过滤器的参数数组里,不需要再嵌套{{ }}标签,直接调用path()函数即可。下面是可行的解决方案:

步骤1:配置翻译字符串

首先在你的翻译文件(比如messages.en.yml或对应语言的文件)中,定义带有占位符的标签文本,占位符用%包裹:

annonces.form.valide_cgu_cgv: "I accept the <a href='%cgu_link%'>CGU</a> and <a href='%cgv_link%'>CGV</a>"

步骤2:正确编写Twig代码

修改你的表单渲染代码,移除参数里多余的{{ }},并确保最后用raw过滤器解析HTML标签:

{{ form_row(form.valid, {
    'label': 'annonces.form.valide_cgu_cgv'|trans({
        '%cgu_link%': path('page_statique', {'page': 'cgu'}),
        '%cgv_link%': path('page_statique', {'page': 'cgv'})
    })|raw
}) }}

为什么原来的写法不行?

你之前在trans的参数数组里写了{'cgu_link' : {{ path(...)}}},这是错误的Twig语法——在过滤器的参数中,直接写表达式(比如函数调用)即可,不需要再用模板输出标签{{ }},否则会导致Twig解析失败。

另外,Symfony翻译组件默认使用%作为占位符的分隔符,所以翻译字符串里的占位符要和参数里的键对应(比如%cgu_link%对应数组里的'%cgu_link%')。最后加上|raw是为了让Twig不转义HTML标签,否则链接会显示成纯文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:40:47