Mam pole password
formularz (nie odwzorowane na User
hasło) do wykorzystania w formie Zmień hasło, wraz z dwoma innymi (odwzorowanych) pól, first
i last
.Jak dodać weryfikatory w locie w Symfony2?
Muszę dodawać sprawdzanie poprawności w locie: jeśli wartość dla hasła jest pusta, nie powinno być sprawdzania poprawności. W przeciwnym razie należy dodać nowe walidatory MinLength
i.
Oto co zrobiłem do tej pory: stworzyć password
pole powtórzył dodać CallbackValidator
i return
jeśli $form->getData()
jest null
.
Jak dodać walidatory dla minimalnej i maksymalnej długości do pola $?
$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();
Wystarczy dodać: używać Symfony \ Komponent \ Form \ CallbackValidator; aby usunąć prefiks formularza. Przestrzenie nazw PHP działają dobrze, ale nie są "pakietowe" zorientowane na java. Najlepiej po prostu mieć instrukcję użycia dla każdej używanej klasy. – Cerad
Niestety, otrzymuję: 'Wezwanie do niezdefiniowanej metody Symfony \ Component \ Form \ FormBuilder :: addValidator' po wywołaniu' $ builder-> get ('password') -> addValidator (...) ' – Athlan