Wpis z mikrobloga

#symfony Mam taką walidację:

{
/**
* @ORM\ManyToMany(targetEntity="ResearchDirection", inversedBy="matrixes")
* @Assert\Count(min = "1", groups={"matrix"})
*/
Ta walidacja działa tylko przy edycji tej encji, nie przy dodawaniu. Dodawanie i edycja korzysta z tego samego Type, z tym samym validation_groups.

Za to walidacja stringa działa zawsze:

/**
* @Assert\NotBlank(groups={"matrix", "matrix_category"})
*/
protected $name;
Co robię źle?

#webdev #symfony2
  • 10
@Jurigag: jest encja która ma selekta z wieloma polami do wyboru (w selekcie są ResearchDirection). Jak nie wybiorę nic w tym selekcie podczas edycji encji, to poprawnie wywala błąd że powinien być przynajmniej 1 element wybrany. Ale jeśli dodaję encję i nic nie wybiorę w selekcie, to nie wywala błędu. Edycja jak i dodawanie to ten sam Type.
@Harry19911: Count(min=1) zwróciłoby Ci błąd jakbyś podał wartość mniejszą od 1 a w przypadku pozostawienia pustego pola po prostu nie sprawdza tej walidacji, bo nie ma czego. Tak jak mówi @Jurigag możesz użyć kilka walidacji i zrobić NotBlank i Count jednocześnie.
@Domons: @Jurigag: ok rozumiem. Przy tworzeniu nowego obiektu encji to było nullem. A przy edycji Doctrine zawsze tworzy tutaj kolekcję. Więc zamiast robić NotBlank to powinienem w konstruktorze dać

$this->researchDirections = new \Doctrine\Common\Collections\ArrayCollection();