Joseph
Joseph

Reputation: 859

I can not display the password field input (with 'repeat' option) with twig (Symfony2)

I have the following form and Twig template:

FormType

class UserType extends AbstractType
{ 
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder

        ->add('name','text',array('label' => 'Name', 'max_length' => 30))
        ->add('surname','text',array('label' => 'Sjurname', 'max_length' => 30))
        ....

        ->add('password', 'repeated', array('error_bubbling' => true,'required' => false, 'first_options'  => array('label' => 'New Password'),'second_options' => array('label' => 'Repeat Password'),'type' => 'password' ,'invalid_message'=> 'Passwords must be the same.'));
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Bundle\Entity\User',
    ));
}

/**
 * @return string
 */
public function getName()
{
    return 'user';
}

}

Twig

  ....

  {{form_start(form, {'method':'Put','attr':{'data-toggle':"validator", 'role':"form" ,'novalidate':'novalidate', 'autocomplete':'off'}})}}

       {{ form_errors(form) }}

        <div class="form-group has-feedback">
            {{ form_label(form.password, 'New Password:',{'label_attr':{'class': 'col-md-5'}}) }}

               <div class="col-md-7">

                {{ form_widget(form.password,{'attr':{'class': 'form-control', 'type': 'password','data-error': 'You must enter a minimum of 6 characters', 'placeholder': 'Min 6 characters', 'data-minlength':"6", 'required':'true' }}) }}

                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
                <div class="help-block with-errors"></div>
            </div>
        </div>

        {{ form_row(form.submit,{'attr':{'class': 'btn btn-primary pull-right' }}) }}

        <div class="hidden">
            {{ form_rest(form) }}
        </div>
    {{ form_end(form) }}

...

The problem I have is that the input is not created. The label is displayed. I have tried using form.password.first and form.password.second but neither is the input (only the labels). With the other fields I do not have that problem, the only thing in this case all the others are hidden in a div. What could be the problem?

I appreciate your help.

Upvotes: 2

Views: 1295

Answers (2)

PastyAndPeas
PastyAndPeas

Reputation: 108

Do you have a version of xDebug installed? You could place a breakpoint on the return section of the Controller and have a look inside the children element of the form. This could tell you what the names of the elements are.

**PS, I would have commented this but I don't have enough rep.

Upvotes: 0

Herr Nentu&#39;
Herr Nentu&#39;

Reputation: 1506

Take a look at this. it is for symfony 2.8/3+ but you can adapt it to your needs.

FormType

->add('plainPassword', RepeatedType::class, [
    'type'           => PasswordType::class,
    'first_options'  => [
        'label' => 'registration.password',
    ],
    'second_options' => [
        'label' => 'registration.retype.password',
    ],
]) ...

twig

<div>
    {{ form_label(form.plainPassword.first) }}
    {{ form_widget(form.plainPassword.first) }}
    {{ form_errors(form.plainPassword.first) }}
</div>

<div>
    {{ form_label(form.plainPassword.second) }}
    {{ form_widget(form.plainPassword.second) }}
    {{ form_errors(form.plainPassword.second) }}
</div>

Upvotes: 3

Related Questions