Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2] Dynamiczne grupy walidacji w FOSUserBundle
Forum PHP.pl > Forum > PHP > Frameworki
masterix
Witam,

korzystając z FOSUserBundle, chcę rozszerzyć formularz rejestracji, co udało się zgodnie z dokumentacją. Natomiast problem mam przy walidacji, w zależności od wybranego pola typu użytkownika potrzebuje wykorzystać różne grupy. Zrobiłem to zgodnie z dokumentacją symfony, korzystając z setDefaultOptions w klasie formularza, ale jest to kompletnie ignorowane.
  1. public function setDefaultOptions(\Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver)
  2. {
  3. $resolver->setDefaults(array(
  4. 'data_class' => '...\Entity\User',
  5. 'validation_groups' => function(\Symfony\Component\Form\FormInterface $form)
  6. {
  7. $data = $form->getData();
  8. if(User::TYPE_PRIVATE != $data->getType())
  9. {
  10. return array('Default', 'Registration', 'company');
  11. }
  12. else
  13. {
  14. return array('Default', 'Registration');
  15. }
  16. }
  17. ));
  18. }

Próbowałem też przypisać jedną grupę poprzez 'validation_groups' => array('company'), ale i to nie działało. Cały czas toolbar pokazuje tylko grupy Default i Registration, zdefiniowane przez FOSUserBundle. Próbowałem w konfiguracji napisać pustą tablicą:
  1. registration:
  2. form:
  3. validation_groups: []
Bez skutku.

Kod decydujący o grupach jest kompletnie ignorowany. Jak ten problem rozwiązać?

Na razie jedyne rozwiązanie jakie przyszło mi do głowy to po prostu nadpisać kontroler Registration i korzystać bezpośrednio z typu, stworzonego przeze mnie. W ten sposób reguły walidacji są uwzględniane.

Pozdrawiam
pyro
  1. var_dump(User::TYPE_PRIVATE != $data->getType()); exit;


?
masterix
Jak już pisałem w pierwszym poście, kod się w ogóle nie wykonywał, żaden var_dump czy inny die.
skowron-line
A ty nadpisałeś klasę formularza czy dopisałeś to setDefaults questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.