Wpis z mikrobloga

mam takie pytanie #symfony #symfony2

zalozmy ze mam encje contact ktora ma pola imie, naziwsko itp
do tego posiadac ma wiele mozliwosci ustawienia telefonu/faxu/maila

jak to najlepiej robic tak aby moc to validowac?

myslalem nad kolejna encja contactDetail i tam pola

conttact -> contact entity,
type -> enum(email,telephone,mobile,fax),
value -> value

jednak zagadka dla mnie jest jak to poprawnie zwalidowac w formularzu w zaleznosci od pola type?
  • 11
@qwelukasz: Mieszasz dwie rzeczy. Co mają formularze do encji?

Encje to są persystowalne obiekty biznesowe.

Formularze to warstwa WEBowa.

To są dwie niezależne warstwy – i tak też je należy zaprojektować w kodzie.

Każda warstwa ma swoją specyficzną walidację.
Tak ja ktoś pisal - custom validator?


@qwelukasz: Generalnie tak.

Oddzielna kwestia, że musisz zdecydować, czy chcesz mieć faktycznie ContactDetail (z type i value) czy też może Email extends ContactDetail, Phone extends ContactDetail, itd (czyli dedykowane klasy i dziedziczenie w Doctrine).
@MacDada: a powiedz mi jeszcze jak zrobic cos takiego:

powiedzmy ze mam ta encje contactDetail
sprawa jest taka ze te detale kontktu moga byc zarowno w samym kontakcie jak i np w firmie

firma moze miec jakies dane do kontaktu -> contactDetail
jak najlepiej to zrobic aby nie powtarzac kodu tylko wykorzystac ta sama encje (contactDetail)?

myslalem nad czyms takim, aby dodac dwie kolejne kolumny definiujace do kogo nalezy
sprawa jest taka ze te detale kontktu moga byc zarowno w samym kontakcie jak i np w firmie


@qwelukasz: Czemu tak chcesz zrobić? Nie możesz zdecydować się, żeby trzymać to w jednym miejscu?

$entityName;


@qwelukasz: Jak chcesz mieć „tę samą” encję ale powiązaną z dwoma różnymi encjami, to właśnie dziedziczenie na to pozwala: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

I faktycznie masz dwie opcje dziedziczenia:

* a.) każda relacja ma swoją oddzielną tabelkę: czyli dajmy