2016-06-11 8 views
5

Ho un problema con la cancellazione di tutti i vincoli di validazione che si estendono dalla super classe. Di seguito è riportato il mio codiceRimuovere tutti i vincoli di convalida nelle proprietà della classe figlio

User.php

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

In admin.php ho scritto il codice qualcosa di simile sotto

classe Admin estende utente

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

voglio rimuove tutti i vincoli di validazione ma non può rimuoverlo.

risposta

2

Per disabilitare la convalida di un modulo è possibile impostare l'opzione validation_groups su false, come descritto nel documento here.

Nel tuo caso è possibile controllare i dati della classe (as described here in the doc) per disabilitare o no la validazione dei form, a titolo di esempio:

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 nel codice vedo aa convalida personalizzata sulla convalida di amministrazione, in caso affermativo in considerazione usare i gruppi di validazione.

Spero che questo aiuto

+0

Erb, my bad, Ho messo una convenzione di denominazione sbagliata. In ogni modo funziona, grazie a @Matteo, ma cambio qualcosa nel tuo codice come questa istanza $ data di Admin e restituisci; (senza false) non proprio sicuro del perché il falso non funzioni. – vibol

+0

ciao @vibol sei il benvenuto! Sentiti libero di modificare la mia risposta con il codice di lavoro corretto. – Matteo

0

Poiché la classe Admin "estende" o eredita dalla classe d'uso, è necessario rimuovere i vincoli in User in questo modo:

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

Si spera, questo è tutto ciò che serve?

+0

Nel mio codice ho già messo come la vostra, ma non ha funzionato – vibol

+0

Assicurarsi di eseguire dalla cartella Symfony questo comando: 'php bin/console dottrina: schema: update --force 'dopo aver apportato queste modifiche –

+0

L'ho eseguito, ma ancora problema – vibol

Problemi correlati