2012-01-31 18 views
5

Sto cercando di implementare la funzionalità di modifica delle password nel progetto Symfony 2. Ho l'entità User con le regole di convalida nel file validation.yml. Nell'entità User è presente il campo "password" con i relativi vincoli di convalida in validation.yml.
Ho creato il modulo con 2 campi "password" e "confirmPasswod". Voglio utilizzare i miei vincoli di convalida dell'entità per il campo "password" e controllare l'uguaglianza tra i campi "passwod" e "confirmPassword". Nel mio contronller scrivoConvalida dei campi uguali in Symfony 2

$form = $this->createForm(new SymfonyForm\ChangePasswordType(), new Entity\User()); 
if ($form->isValid()) 
    {..............} 

In entità 'Utente' Non ho campo 'confirmPasswod'. Così ottengo l'errore:

Neither property "confirmPassword" nor method "getConfirmPassword()" nor method "isConfirmPassword()" exists in class 

C'è un modo per utilizzare la convalida modulo di entità-based per alcuni campi del modulo e non convalida entità-based per altri? Grazie in anticipo.

risposta

16

In SymfonyForm\ChangePasswordType si può usare qualcosa di simile:

$builder->add('password', 'repeated', array(
    'type' => 'password', 
    'first_name' => 'Password', 
    'second_name' => 'Password confirmation', 
    'invalid_message' => 'Passwords are not the same', 
)); 

Dal Symfony 2.1 è possibile configurare le opzioni per evitare nome dell'elemento rotto (come indicato nel commento)

$builder->add('password', 'repeated', array(
    // … the same as before 
    'first_name' => 'passwd', 
    'second_name' => 'passwd_confirm', 
    // new since 2.1 
    'first_options' => array('label' => 'Password'), 
    'second_options' => array('label' => 'Password confirmation'),  
)); 
+0

Grazie, questo è stato utile. – Ris90

+1

Questo ha funzionato anche per me. Grazie. C'è una cosa che ho cambiato, però. Ho usato 'password' e' password_confirmation' invece di 'Password' e' Password di conferma'. Se usi quest'ultimo, finisci con nomi di elementi imbarazzanti come "vnn_pressboxbundle_preferencestype_password_Confirm password". –