2013-06-20 15 views
9

ho BaseEntity classe:Symfony2 Vincoli Override

class BaseEntity 
{ 
    /** 
    * The name. 
    * 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255, unique=true, nullable=false) 
    * @Assert\Length(min=2, max=255, minMessage="default.name.short", maxMessage="default.name.long") 
    * @Assert\NotBlank(message = "default.name.not_blank") 
    */ 
    private $name; 
} 

e

class UserEntity extends BaseEntity 
{ 
    /** 
    * {@inheritDoc} 
    * 
    * @Assert\Length(min=2, max=255, minMessage="user.name.short", maxMessage="default.name.long") 
    * @Assert\NotBlank(message = "user.name.not_blank") 
    */ 
    private $name; 
} 

ora, quando inserisco un nuovo UserEntity nel modulo con nome lungo o breve Symfony mi da 2 errori: (per lungo :)

  • default.name.long
  • user.name.long

Ma voglio per mostrare solo errore, quindi: - user.name.long

esempio Voglio ignorare, ma non aggiungerne un altro

+3

Come so che cann't ignorare la convalida definita per classe genitore. La soluzione migliore consiste nell'aggiungere un gruppo di convalida ai validati con cui si sarà convalidati dall'entità. –

+0

Inoltre non ha trovato nessun altro modo –

risposta

0

Se sei felice di impostare almeno alcune delle regole di validazione tramite un file YAML, piuttosto che le annotazioni, è possibile ignorare le impostazioni di convalida della classe base, senza la necessità di modificare il file classe stessa.

Il file YAML sarebbe simile a questa e avrebbe bisogno di essere in una posizione come src/YourApp/YourBundle/Resources/config/validation.yml per essere prelevati automaticamente:

BaseEntity: 
    properties: 
     name: 
      - NotBlank: 
       message: user.name.not_blank 
      - Length: 
       min: 2 
       minMessage: user.name.short 
       max: 255 
       maxMessage: default.name.long 

Se si vuole mettere il file di convalida in una posizione non standard, vedi https://stackoverflow.com/a/24210501/328817