在我的注册表单中,我有一个复选框“我接受条款”,并希望将“条款”一词链接到我的条款页面。
有没有办法使用路由添加表单标签的链接? (最好不要将形式的容器注入)
答案 0 :(得分:6)
由于上面的解决方案不适用于我,我使用此处建议的解决方案解决了它:https://gist.github.com/marijn/4137467
好的,所以在这里我是如何做到的:
{% set terms_link %}<a title="{% trans %}Read the General Terms and Conditions{% endtrans %}" href="{{ path('get_general_terms_and_conditions') }}">{% trans %}General Terms and Conditions{% endtrans %}</a>{% endset %}
{% set general_terms_and_conditions %}{{ 'I have read and accept the %general_terms_and_conditions%.'|trans({ '%general_terms_and_conditions%': terms_link })|raw }}{% endset %}
<div>
{{ form_errors(form.acceptGeneralTermsAndConditions) }}
{{ form_widget(form.acceptGeneralTermsAndConditions) }}
<label for="{{ form.acceptGeneralTermsAndConditions.vars.id }}">{{ general_terms_and_conditions|raw }}</label>
</div>
答案 1 :(得分:4)
最好的方法是覆盖用于渲染特定标签的树枝块。
首先,查看文档的form fragment naming部分。然后在表单模板中使用适当的名称创建一个新块。别忘了告诉树枝使用它:
{% form_theme form _self %}
下一步检查default form_label
block。
你可能只需要它的一部分,就像这样(我在这里留下默认的块名称):
{% block form_label %}
{% spaceless %}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
<a href="{{ path("route_for_terms") }}">{{ label|trans({}, translation_domain) }}</a>
</label>
{% endspaceless %}
{% endblock %}
答案 2 :(得分:0)
我的解决方案是另一个:
形式:
$builder
->add(
'agree_to_rules',
'checkbox',
[
'required' => true,
'label' => 'i_agree_to'
]
);
和html:
<span style="display:inline-block">
{{ form_widget(form.agree_to_rules) }}
</span>
<span style="display:inline-block">
<a href="#">rules</a>
</span>
看起来一样:)
答案 3 :(得分:0)
一种非常简单的方法是
arguments[1]
如果您想使用翻译
,也可以这样做在您的翻译文件中,例如messages.en.yml add
{{ form_widget(form.terms, { 'label': 'I accept the <a href="'~path('route_to_terms')~'">terms and conditions</a>' }) }}
在您的视图中添加
terms:
url: 'I accept the <a href="%url%">terms and conditions</a>'
答案 4 :(得分:0)
作为一种选择,您可以这样做:
->add('approve', CheckboxType::class, [
'label' => 'Text part without link',
'help' => 'And <a href="/x.pdf">download it</a>',
'help_html' => true,
])
答案 5 :(得分:0)
In Symfony 5.1 there are new form improvements.
HTML contents are allowed in form labels!
出于安全原因,HTML 内容默认在表单标签中进行转义。新的 label_html 布尔选项允许表单字段在其标签中包含 HTML 内容,这对于在按钮内显示图标、链接和复选框/单选按钮标签中的某些格式等很有用。
// src/Form/Type/TaskType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ...
->add('save', SubmitType::class, [
'label' => ' Save',
'label_html' => true,
])
;
}
}
在您的情况下,您可以直接从模板设置表单标签并在那里传递路线。
{{ form_widget(form.acceptTermsAndConditions, {
label: '<a href="' ~ path("route") ~ '">' ~ "I accept ..."|trans ~ '</a>',
label_html: true
})
}}