0

I just dont know why form_errors(form) does not print any errors?

Here is my twig file

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register signup-form" novalidate>                        
                        <div class="errors">
                             {{ form_errors(form) }}   
                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-check"></i> {{ form_widget(form.firstName, { 'attr': {'class': 'form-control'} } ) }}
                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-check"></i> {{ form_widget(form.lastName, { 'attr': {'class': 'form-control'} } ) }}
                        </div>
                       <div class="form-input-group">
                            <i class="fa fa-check"></i> {{ form_widget(form.contactNumber, { 'attr': {'class': 'form-control'} } ) }}
                        </div>
                        <div class="form-input-group input-append date" id="datepicker">                        
                                <i class="fa fa-calendar"></i>
                                {{ form_widget(form.birthday, 
                                    {attr: { 
                                        'data-format': "dd/MM/yyyy hh:mm:ss" },
                                    }) 
                                }}
                                <span class="add-on"> 
                                    <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
                                </span>

                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-venus-mars"></i>
                            <div class="gender radio">                                    
                                <label class="radio-inline">{{ form_widget(form.gender[0]) }} &nbsp; Male </label>        
                                <label class="radio-inline">{{ form_widget(form.gender[1]) }} &nbsp; Female </label>                   
                            </div>
                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-check"></i> {{ form_widget(form.username, { 'attr': {'class': 'form-control', 'placeholder': 'Enter username'} } ) }}
                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-check"></i> {{ form_widget(form.email, { 'attr': {'class': 'form-control', 'placeholder': 'Enter email address'} } ) }}
                        </div>
                        <div class="form-input-group">
                            <i class="fa fa-lock"></i> {{ form_widget(form.plainPassword.first, { 'attr': {'class': 'form-control', 'placeholder': 'Enter password'} } ) }}
                        </div>
                         <div class="form-input-group">
                            <i class="fa fa-lock"></i> {{ form_widget(form.plainPassword.second, { 'attr': {'class': 'form-control', 'placeholder': 'Repeat password'} } ) }}
                        </div>
                        <div class="row">
                             <div class="col-md-6 col-md-offset-3">
                                 <button type="submit" class="btn-fill sign-up-btn">Register</button>
                            </div>
                        </div>   
                        {{ form_rest(form) }} 
                    </form>

and here is my form type:

   class RegistrationType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        parent::buildForm($builder, $options);

        $gender = array(
            1 => 'Male',
            0 => 'Female'
        );

        $builder
        ->add('username', 'text' , array('attr'=> array('placeholder'=>'Enter username')))
        ->add('firstName', 'text', array('attr'=> array('placeholder'=>'Enter first name')))
        ->add('lastName', 'text',  array('attr'=> array('placeholder'=>'Enter last name')))
        ->add('birthday', 'datetime', array(
            'attr' => array('placeholder' => 'Pick your birthday'),        
            'widget' => 'single_text', 
            'html5' => false,          
        ))
        ->add('gender', 'choice', array(
            'attr' => array('class' => 'form-control'),        
            'choices' => $gender,
            'data' => 1,
            'expanded' => true,
        ))
        ->add('contactNumber','text' , array('attr'=> array('placeholder'=>'Enter contact number')));
    }

    public function getParent()
    {
        return 'fos_user_registration'; 
    }

    public function getName()
    {
        return 'app_user_registration';
    }

I know that there were errors because if it appears when i render them individually like so:

form_errors(form.firstName);

By the way I am using the 2.7 version.

2 Answers 2

3

Errors of child field will be passed to its parent only if error_bubbling is set to true for this field.

Sign up to request clarification or add additional context in comments.

Comments

1

You need to add constraints to each of your form elements.

Example:

use Symfony\Component\Validator\Constraints as Assert;

// ...

$builder->add('username', 'text', array(
    // ...
    'constraints' => array(
        new Assert\Length(array(
            'min' => 4
        )
    ),
    // ...
);

If the username field submitted has length less than 4, then it will show the error.

Check this link for other validation constraints.

1 Comment

validation should be form independent. Better way is adding validation on entity level (Resources/config/validation.yml). Btw, link which you have given tells the same information.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.