Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony2][Symfony] file upload nie podoba mi się
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Właśnie po raz pierwszy zaimplementowałem upload obrazka + Doctrine i mam pewne wątpliwości. Chodzi o nakład pracy w kodzie potrzebny do przeprowadzenia tej operacji. Zrobiłem to w oparciu o lifecycle callbacks i musiały powstać 3 pola i 11 metod w obiekcie. Fajnie, że nie trzeba nic robić w kontrolerze i rozumiem, że część tych metod to rzeczy w stylu getWebPath i jak mi się nie podoba to nie muszę koniecznie ich używać, ale mimo wszystko to wydaje mi się trochę dziwne. Strach pomyśleć co się stanie jak będę miał 6 plików przy obiekcie.

A na koniec jeszcze czytam w cookbook, że "The PreUpdate and PostUpdate callbacks are only triggered if there is a change in one of the entity's field that are persisted" więc jak zmienię tylko awatar w profilu usera to on mi się nie zapisze :/ Trochę to załamujące, czy to podejście z cookbook jest naprawdę optymalne?

Ten post edytował Foxx 17.04.2013, 13:48:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crea17
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.05.2010

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


Czyli w encji:
  1. /**
  2.   * @ORM\Column(type="string", length=255, nullable=true)
  3.   */
  4. protected $avatar;
  5.  
  6. /**
  7.   * @Assert\File(maxSize="6000000")
  8.   * @Assert\NotBlank
  9.   * @Assert\Image(minWidth=50)
  10.   * @Assert\Image(minWidth=50)
  11.   */
  12. protected $file;
  13.  
  14. /**
  15.   * Sets file.
  16.   *
  17.   * @param UploadedFile $file
  18.   */
  19. public function setFile(UploadedFile $file = null)
  20. {
  21. $this->file = $file;
  22. $ext = $this->file->guessExtension();
  23. $this->avatar = 'av-'.$this->getId().'.'.$ext;
  24. }


A w kontrolerze
  1. if ($form->isValid()) {
  2. $data = $form->getData();
  3.  
  4. $data->getFile()->move(
  5. $this->getUploadRootDir(),
  6. $user->getAvatar()
  7. );
  8.  
  9. $userManager = $this->container->get('fos_user.user_manager');
  10.  
  11. $userManager->updateUser($user);
  12. }


Dobrze zrozumiałem?

Ten post edytował Crea17 25.02.2014, 09:55:43
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 28.12.2025 - 06:05