Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Doctrine2] PrePersist - zatrzymanie procesu dodawania rekordu
korniks
post 28.10.2012, 01:46:05
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 22.03.2012

Ostrzeżenie: (0%)
-----


Witam,

mam jeden problem z którym nie mogę sobie poradzić, mianowicie w modelu zanim zostanie dodany nowy rekord muszę przeprasować zawartość wczytanego pliku.

  1. /**
  2.   * @ORM\PrePersist()
  3.   * @ORM\PreUpdate()
  4.   */
  5. public function upload()
  6. {
  7. if (null === $this->file) {
  8. return;
  9. }
  10.  
  11. //testowy tekst który docelowo będzie wczytany z pliku
  12. $text = $this->parseText("tekst");
  13.  
  14. $this->setContent($text);
  15. $this->setName($this->file->getClientOriginalName());
  16.  
  17. unset($this->file);
  18.  
  19. }


Jeżeli zawartość pliku ma nieodpowiednią strukturę zostanie wyrzucony wyjątek. I tutaj jest problem, nie mam pojęcia jak zaniechać dodania nowego rekordu w przypadku gdy ten wyjątek się pojawi. Podobnie w przypadku gdy plik nie zostanie poprawnie wczytany, sam return w prepersist nie za wiele mi pomoże gdyż doctrine i tak spróbuje dodać nowy rekord, co spowoduje błąd bo pole "content" w bazie nie może być null. Istnieje możliwość zrobienia tego w modelu czy może jestem skazany na zrobienie tego w kontrolerze?

Ten post edytował korniks 28.10.2012, 01:53:47
Go to the top of the page
+Quote Post
-=Peter=-
post 28.10.2012, 10:32:30
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To powinno być zrobione w walidatorze, zdarzenia prePersist itp. nie do tego służą. Możesz napisać swój customowy lub wykorzystać walidator Callback i stworzyć metodę w modelu, która dokonuje walidacji.


--------------------
Go to the top of the page
+Quote Post
korniks
post 28.10.2012, 12:59:48
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 22.03.2012

Ostrzeżenie: (0%)
-----


Wielkie dzięki za pomoc.
Go to the top of the page
+Quote Post
thek
post 28.10.2012, 13:24:05
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Peter dobrze podpowiada. Od tego jest walidator, by na etapie sprawdzania informować o problemach z polem formularza. Plik też takim jest, więc nie ma problemu. Możesz więc albo własny walidator "popełnić" dla tego pola, albo podpiąć się choćby do któregoś eventu przed walidacją.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 11.06.2024 - 01:41