मैं एक password
फॉर्म फील्ड (नहीं मैप किया गया पासवर्ड को User
), एक परिवर्तन पासवर्ड के रूप में प्रयोग की जाने वाली दो अन्य (मैप किया गया) क्षेत्रों, first
और last
के साथ है।Symfony2 में फ्लाई पर वैधकर्ता कैसे जोड़ें?
मुझे फ्लाई पर वैधकर्ता जोड़ना होगा: यदि के लिए मान खाली है तो कोई सत्यापन होना चाहिए। अन्यथा एक नया MinLength
और MaxLength
मान्यताओं को जोड़ा जाना चाहिए।
यहाँ मैं अब तक क्या किया है है: दोहराया password
क्षेत्र बनाने के लिए, एक CallbackValidator
और return
जोड़ने $form->getData()
null
है।
फिर, मैं न्यूनतम और अधिकतम लंबाई $ फ़ील्ड के लिए वैधकर्ता कैसे जोड़ सकता हूं?
$builder = $this->createFormBuilder($user);
$field = $builder->create('new_password', 'repeated', array(
'type' => 'password',
'first_name' => 'Password',
'second_name' => 'Confirm password',
'required' => false,
'property_path' => false // Not mapped to the entity password
));
// Add a callback validator the the password field
$field->addValidator(new Form\CallbackValidator(function($form) {
$data = $form->getData();
if(is_null($data)) return; // Field is blank
// Here password is provided and match confirm, check min = 3 max = 10
}));
// Add fields to the form
$form = $builder
->add('first', 'text', array('required' => false)) // Mapped
->add('last', 'text', array('required' => false)) // Mapped
->add($field) // Not mapped
->getForm();
बस जोड़ें: Symfony \ घटक \ फार्म \ CallbackValidator का उपयोग करें; फॉर्म उपसर्ग ड्रॉप करने के लिए। PHP नेमस्पेस अच्छी तरह से काम करते हैं लेकिन वे जावा जैसे उन्मुख "पैकेज" नहीं हैं। उपयोग की जाने वाली प्रत्येक कक्षा के लिए केवल एक उपयोग कथन है। – Cerad
दुर्भाग्य से, मुझे प्राप्त होता है: 'अपरिभाषित विधि सिम्फनी \ घटक \ फॉर्म \ फॉर्मबिल्डर :: addValidator' पर कॉल करें जब मैं '$ builder-> get ('password') -> addValidator (...)' – Athlan