2016-06-11 14 views
5

Mam problem z usunięciem wszystkich ograniczeń sprawdzania poprawności, które rozciągają się od super klasy. Poniżej jest mój kodUsuń wszystkie więzy sprawdzania poprawności we właściwościach klas podrzędnych

User.php

* @var string 
    * @ORM\Column(type="text", unique=true) 
    * @Assert\NotBlank() 
    * @Assert\NotNull() 
    * @AdminAssert\MyCustomValidation 
    */ 
protected $phoneNumber; 

W admin.php napisałem coś takiego kodu poniżej

klasa Admin rozciąga Użytkownikowi

* @var string 
    * @ORM\Column(type="text", unique=true) 
    */ 
protected $phoneNumber; 

chcę usuń wszystkie wiązania sprawdzające, ale nie można ich usunąć.

Odpowiedz

2

Aby wyłączyć sprawdzanie poprawności formularza, można ustawić opcję validation_groups na false, zgodnie z opisem w dokumencie pod numerem here.

W twoim przypadku można sprawdzić dane klasa (as described here in the doc) do wyłączania lub nie walidacji formularza, jako przykład:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'validation_groups' => function (FormInterface $form) { 
      $data = $form->getData(); 

      if ($data instanceof Admin) { 
       return; 
      } 

      return array('Default'); 
     }, 
    )); 
} 

Hovenever w kodzie widzę aa niestandardową walidację walidacji administratora, jeśli więc rozważyć używać grup walidacyjnych.

Nadzieja ta pomoc

+0

Erb, moje złe, Wprowadziłem niewłaściwą konwencję nazewnictwa. Jakikolwiek sposób działa mi dobrze, dzięki @Matteo, ale po prostu zmieniam coś w twoim kodzie, jak ten $ instance instanceof Admin and return; (bez fałszu) nie do końca wiem, dlaczego fałsz nie działa. – vibol

+0

Witam @vibol, serdecznie zapraszamy! Możesz edytować moją odpowiedź za pomocą poprawnego działającego kodu. – Matteo

0

Ponieważ klasa Admin „rozciąga” lub dziedziczy z klasy użytkownika, musisz usunąć ograniczenia w Użytkownik tak:

* @var string 
    * @ORM\Column(type="text", unique=true) 
    */ 
protected $phoneNumber; 

Mam nadzieję, że to wszystko, czego potrzebujesz?

+0

W moim kodu I już umieścić jak twój, ale nie działa – vibol

+0

upewnij się uruchomić z katalogu Symfony tej komendy: 'bin/php doktrynę konsoli: schema: update --force 'po wprowadzeniu tych zmian –

+0

Uruchomiłem to, ale nadal problem – vibol