2012-06-08 4 views
28

मैं सिम्फनी 2 के साथ काम करता हूं और मैं पंजीकरण फॉर्म बनाना चाहता हूं। मैं FOSUserBundle का उपयोग नहीं करना चाहता हूं।सिम्फनी 2: एक कस्टम फॉर्म तत्व जोड़ें, एक इकाई में नहीं

तो, मैं एक इकाई खाता बनाते हैं (क्षेत्रों के साथ: उपयोगकर्ता नाम, पासवर्ड, ईमेल ...) और मैं प्रपत्र बनाने के लिए:

$account = new Account(); 

$form = $this->createFormBuilder($account) 
    ->add('username',   'text', array('label' => 'Nom de compte :')) 
    ->add('password', 'password', array('label' => 'Mot de passe :')) 
    ->add('email',   'email', array('label' => 'Adresse email :')) 
    ->getForm(); 

अब, मैं पासवर्ड के लिए एक पुष्टिकरण क्षेत्र जोड़ना चाहते हैं। लेकिन, जब मैं उदाहरण के लिए "password_confirmation" के लिए ऐड() विधि के साथ एक क्षेत्र को जोड़ने के लिए, कोशिश है कि मैं इस है:

न तो संपत्ति "password_confirmation" और न ही विधि "getPasswordConfirmation()" और न ही विधि "isPasswordConfirmation() "कक्षा में मौजूद है" ऐप \ फ्रंटबंडल \ Entity \ Account "

मैं कस्टम फ़ील्ड कैसे जोड़ सकता हूं? और उसके बाद, इसे कैसे वैध करें?

धन्यवाद। बीआर।

उत्तर

49

सामान्य स्थिति में, आपको स्पष्ट रूप से निर्दिष्ट करना होगा कि * password_confirmation * property_path विकल्प का उपयोग करके इकाई का हिस्सा नहीं है।

->add('password_confirmation', 'password', array('property_path' => false)) 

और फिर इसे CallBackValidator के साथ सत्यापित करने के लिए।

लेकिन, इस विशिष्ट मामले में, जहां आप एक फ़ील्ड दोहराना चाहते हैं, repeated विजेट आपके लिए ऐसा कर सकता है।

->add('password_confirmation', 'repeated', array(
    // See the docs :) 
)); 
+0

बहुत बहुत धन्यवाद;) –

+0

एक सही उत्तर। – rjmunro

+0

बहुत बहुत धन्यवाद। – iizno

61

Symfony 2.1 के लिए एक अद्यतन:

property_path पदावनत किया गया है और इसके बजाय आप mapped उपयोग करना चाहिए। वाक्यविन्यास वही रहता है:

->add('password_confirmation', 'password', array('mapped' => false)) 
+5

यह सिम्फनी 3.0 के लिए भी काम करता है – yeouuu