gpt4 book ai didi

symfony - 在 Symfony 中为 Bootstrap 复选框渲染带有变量的翻译

转载 作者:行者123 更新时间:2023-12-03 22:03:13 28 4
gpt4 key购买 nike

在 Symfony 4 项目中,我使用 Bootstrap 主题来呈现我的 HTML 内容。

我有一个表单,其中包含一个用于接受以下条款的复选框:

☑ I accept terms

我想获取链接作为变量(会根据语言而改变)

所以我有一个像这样的翻译 yaml:

form:
register:
title: Registration
username: Username
email: Email
password: Password
repeat_password: Repeat your password
accept_terms: Accept %terms%

在我的 formType 文件中,我无法注入(inject)翻译,因为我找不到任何东西可以提供 %terms% 参数。

->add(
'termsAccepted',
CheckboxType::class,
[
'mapped' => false,
'constraints' => new IsTrue(),
'label' => 'form.register.accept_terms',
]
)

在 twig 文件中我无法更改 form_label 因为...在 Symfony 中 documentation ,它表示 form_label 不适用于复选框(和单选按钮)

{{ form_label(form.termsAccepted, 'that custom label is ignored...') }}

关于如何在复选框元素 (Bootstrap 4) 上发送翻译(带参数)有什么想法吗?

解决方案

在我的表单中:

{% form_theme form.termsAccepted _self %}

{% block checkbox_label -%}
... here is a copy/paste of the orignial code from https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig ...

{{ widget|raw }}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
{% set terms_link = '<a href="http://url.com">'~'form.register.terms_link'|trans()~'</a>' %}
{{- label is not same as(false) ? (translation_domain is same as(false) ? label|raw : label|trans({'%terms%': terms_link}, translation_domain)|raw) -}}
{{- form_errors(form) -}}
</label>
{%- endif -%} {%- endblock checkbox_label %}

最佳答案

在您看来,您可以在顶部插入这个

{% form_theme form.termsAccepted _self %}

如文档中所写 https://symfony.com/doc/current/form/form_customization.html#child-forms

然后您可以用您需要的那个覆盖 bootstrap 4 表单主题中附带的 checkbox_label。随便写

{% block checkbox_label %}
Copy and paste here the same block from bootstrap 4 form them and edit as your needs. See https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig
{% endblock %}

此自定义 block 将仅用于 form.termsAccepted。

如果您想要一个更通用的解决方案,您可以创建自己的类型(例如扩展 CheckboxTypeCheckboxlinkType),在 中添加所需的选项(linkUri 和 linkText) configureOptions 并将它们的值传递给 buildView 中的 View 。然后您可以使用 bootstrap 中的那个编写您需要呈现类型的特定 block ,称为 checkboxlink_label 4 表单主题作为基础并使用您的变量。如果您需要这方面的帮助,请告诉我。

关于symfony - 在 Symfony 中为 Bootstrap 复选框渲染带有变量的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973385/

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