【问题标题】:Display custom message for checkbox (terms of service/privacy)显示复选框的自定义消息(服务条款/隐私)
【发布时间】:2017-09-12 09:35:33
【问题描述】:

我还是 Symfony 和 Php 的新手,所以我使用 Symfony 文档中的 CheckboxType 代码。

目前,如果用户尝试注册并且未选中复选框,则不会出现任何消​​息,但仍会阻止用户创建帐户。

(1) 我希望在复选框旁边显示一条红色的错误消息,说明必须选中该框才能继续。我也想自定义这条消息。

谢谢!

Register.html

  {% extends 'base.html.twig' %}

{% block body %}
    <div class="container">
        <div class="row">
            <div class="col-xs-12">
                <h1>Register!</h1>

                {{ form_start(form) }}
                {{ form_row(form.username) }}
                {{ form_row(form.email) }}
                {{ form_row(form.plainPassword.first, {
                    'label': 'Password'
                }) }}
                {{ form_row(form.plainPassword.second, {
                    'label': 'Repeat Password'
                }) }}
                <a href="https://termsfeed.com/terms-service">Terms of service</a>
                {{ form_widget(form.termsAccepted) }}

                <a href="http://t5Project/web/">cancel</a>

                <button type="submit" class="btn btn-primary" formnovalidate>
                    Register
                </button>

                <br></br>

                <p><a href="https://termsfeed.com/privacy">Privacy Policy</a>


                {{ form_end(form) }}
            </div>
        </div>
    </div>
{% endblock %}

RegistrationForm.php

  class UserRegistrationForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('email', EmailType::class)
            ->add('username', TextType::class)
            ->add('plainPassword', RepeatedType::class, ['type' => PasswordType::class])
            ->add('termsAccepted', CheckboxType::class, array(
        'mapped' => false,
        'constraints' => new IsTrue(),));


    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
            'validation_groups' => ['Default', 'Registration']
        ]);
    }
}

【问题讨论】:

    标签: php symfony checkbox


    【解决方案1】:

    问题是你正在使用:

    {{ form_widget(form.termsAccepted) }}
    

    用于渲染复选框。这只会渲染小部件,而:

    {{ form_row(form.termsAccepted) }}
    

    所有用户使用的字段将包含标签、小部件和错误消息。如果您想保留小部件,例如因为使用form_row 会以某种方式弄乱模板,您可以使用以下方法单独呈现错误:

    {{ form_errors(form.termsAccepted) }}
    

    您可能还想查看Form Customization 上的文档。

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 2019-02-02
      • 1970-01-01
      相关资源
      最近更新 更多