首页 > 解决方案 > Symfony 2.8 表单必填字段错误文本

问题描述

我有一个使用表单生成器创建的表单字段。它看起来像这样:

    $builder
        ->add('firstName', null, array('required' => true, 'label' => 'First Name'))

这是表单的完整树枝代码。当大多数字段为空白时,我无法在字段上显示错误消息。电子邮件和密码工作正常,但其他字段不显示错误消息。

<div class="row">
    <div class="col-md-12">
        <div class="text-center">
            <h1>Create an Account</h1>
        </div>
        <div class="col-md-12">
            <div class="clear"></div>
        </div>
        <form id="loginForm" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
            {# {{ form_widget(form) }} #}
            {{ form_errors(form) }}

            <div class="col-md-3">
                <fieldset>
                    <legend>Email</legend>
                        {{ form_row(form.email.children['first'], { 'label': 'Email Address', 'attr' : { 'class' : 'form-control' } }) }}
                        {{ form_row(form.email.children['second'], { 'label': 'Verify Email', 'attr' : { 'class' : 'form-control' } }) }}
                        {{ form_errors(form.email) }}
                        {{ form_errors(form.phone) }}
                        <div class="clear-small"></div>
                        <div class="clear-small"></div>
                         <legend>Password</legend>
                        {{ form_row(form.plainPassword.children['first'], { 'label': 'Choose a Password', 'attr' : { 'class' : 'form-control' } }) }}
                        {{ form_row(form.plainPassword.children['second'], { 'label': 'Verify Password', 'attr' : { 'class' : 'form-control' } }) }}
                        {{ form_errors(form.plainPassword) }}
                </fieldset>
                <div class="clear"></div>
            </div>
            <div class="col-md-3">
                <fieldset>
                    <legend>Contact Information</legend>
                    {{ form_errors(form.firstName) }}
                    {{ form_row(form.firstName, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.lastName, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.company, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.phone, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.fax, {'attr' : { 'class' : 'form-control' } }) }}
                </fieldset>
            </div>
            <div class="col-md-3">
                <fieldset>
                    <legend>Company Information</legend>                   
                    {{ form_row(form.company, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.address, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.address2, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.zip, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.city, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.state, {'attr' : { 'class' : 'form-control' } }) }}
                    {{ form_row(form.country, {'attr' : { 'class' : 'form-control' } }) }}

                </fieldset>
            </div>
            <div class="col-md-3">
                <legend>Shipping Information</legend>      
                {{ form_row(form.ship_company, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_contact, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_address, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_address2, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_zip, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_city, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_state, {'attr' : { 'class' : 'form-control' } }) }}
                {{ form_row(form.ship_country, {'attr' : { 'class' : 'form-control' } }) }}             
                {{ form_row(form.ship_phone, {'attr' : { 'class' : 'form-control' } }) }}             
            </div>

            <div class="clear"></div>

            <div>
                {{ form_widget(form._token) }}
                <input class="dark-blue-bg white-text btn" type="submit" id="_submit" name="_submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}"/>
            </div>

        </form>
        <div class="clear"></div>
    </div>
</div>

当用户在没有填写名字的情况下点击注册时,他们不会收到错误文本。我将如何解决这个问题?

谢谢!

标签: formssymfonyrequired

解决方案


尝试使用form_start

{{ form_start(form, {id: "loginForm", 'method': 'POST', action: path('fos_user_registration_register'), class:"fos_user_registration_register" }) }}

并删除

<form id="loginForm" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">

form_end结束


推荐阅读