Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine2] PrePersist - zatrzymanie procesu dodawania rekordu
korniks
post
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
 
Start new topic
Odpowiedzi (1 - 3)
-=Peter=-
post
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
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
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ą.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 06:47