我无法用twig(Symfony2)显示密码字段输入(带'repeat'选项)

时间:2017-05-03 12:23:19

标签: forms symfony twig

我有以下表格和Twig模板:

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';
}

}

枝条

  ....

  {{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) }}

...

我遇到的问题是没有创建输入。显示标签。我尝试过使用form.password.firstform.password.second,但输入都没有(只有标签)。对于其他领域,我没有这个问题,在这种情况下唯一的事情是所有其他领域都隐藏在div中。可能是什么问题呢?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

看看这个。它适用于symfony 2.8 / 3 +但您可以根据自己的需要进行调整。

  

FormType

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

树枝

<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>

答案 1 :(得分:0)

您是否安装了xDebug版本?您可以在Controller的 return 部分放置一个断点,并查看表单的子元素。这可以告诉你元素的名称是什么。

** PS,我会评论这个,但我没有足够的代表。