带有参数的表单标签转换键


Form labels translation key with parameters

我在symfony2中有一个表单,我在其中添加一个复选框,让我们说需要检查的"条款和条件"。我想添加一个指向"条款和条件"标签的链接,我想将其作为参数传递,假设 %url% 像这样

消息.en.yml

site.terms: Hiermit akzeptiere ich die <a href="%url%">AGB</a>

在表单类型中,我有这样的东西

$builder
...
->add('terms', 'checkbox', [
    'constraints' => [
        new True()
    ],
    'label' => 'site.terms'
]);

所以问题是如何将该 url 参数甚至参数数组添加到表单标签中。

为了避免转义表单标签内的 HTML,我像这样覆盖了块标签:

{% block form_label %}
    {% if not compound %}
        {% set label_attr = label_attr|merge({'for': id}) %}
    {% endif %}
    {% if required %}
        {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
    {% endif %}
    {% if label is empty %}
        {% set label = name|humanize %}
    {% endif %}
    {# added raw to avoid HTML Escaping #}
    <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain)|raw }}</label>
{% endblock form_label %}

我遇到了同样的问题。

我没有时间深入研究更改标签呈现和使用表单字段添加的参数作为翻译参数的可能性。

但是,我的快速解决方法是手动呈现标签并通过将其作为参数传递来更改标签:

{# custom twig extention to get the url for a page #}
{% set url = get_path_by_internal_name('tos', app.request.locale) %}
{{ form_label(terms, 'site.terms'|trans({'%url%': url})|raw) }}