2012-01-31 28 views
5

Symfony 2 projesinde değişiklik parola işlevselliği uygulamaya çalışıyorum. Varlık User, validation.yml dosyasında doğrulama kuralları var. User numaralı varlıkta, validation.yml numaralı kimlik doğrulama kısıtlamaları olan "password" alanına sahibim.
2 alan 'password' ve 'confirmPasswod' ile form oluşturdum. "Şifre" alanı için varlık doğrulama sınırlamalarımı kullanmak ve 'passwod' ile 'confirmPassword' alanları arasındaki eşitliği kontrol etmek istiyorum. Benim contronller içinde ben 'confirmPasswod' alanına sahip olmayan 'Kullanıcı' varlık olarakSymfony 2'de Eşit Alanlar doğrulaması 2

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

yazın.

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

diğer bazı form alanları için taraf bazlı form doğrulama değil varlık tabanlı doğrulama kullanmak için herhangi bir yolu var mı: Ben hata olsun? Şimdiden teşekkürler.

cevap

16

SymfonyForm\ChangePasswordType yılında böyle bir şey kullanabilirsiniz:

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

Symfony 2.1 beri (yorumunda belirtildiği gibi)

$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

Teşekkür kırık öğe adı önlemek için seçeneklerini yapılandırabilirsiniz, bu çok oldu faydalı. – Ris90

+1

Bu benim için de çalıştı. Teşekkürler. Yine de değiştiğim bir şey var. 'Şifre' ve 'Şifre onayı' yerine 'şifre' ve 'password_confirmation' kullandım. Eğer ikincisini kullanırsanız, 'vnn_pressboxbundle_preferencestype_password_Confirm password' gibi garip eleman adları ile sonuçlanırsınız. –