Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][SF2][Symfony2] Listener + Entity
Forum PHP.pl > Forum > PHP > Frameworki
aras785
Witam.

Mam: Listener który ma za zadanie usuwać cache obrazków ze starymi nazwami.

Mam edycja zdjęcia -> tylko edytujemy w formularzu: title
Obecnie w title jest: image1 - więc obrazek to image1.jpg
Teraz chcę zmienić nazwę na image2 i chcę image1 przekazać do Listener.

W entity dodałem sobie zmienna: $old_image;

Następnie w
  1. @ORM/PreUpdate daję $this->old_image = $this->getImage(); //nazwa pliku starego

Kolejne w Listener odbieram tak:

  1. public function preUpdate(LifecycleEventArgs $args)
  2. {
  3. $entity = $args->getEntity();
  4.  
  5. if($entity instanceof \Acme\Bundle\TestBundle\Entity\Test) {
  6. $entity->old_image;
  7. }
  8.  
  9. }


Wszystko działa ale w $entity->old_image otrzymuję: image2, a powinno być image1.
W PreUpdate w entity mam dobrą wartość (image1)... Wiecie dlaczego tak jest?

ps. nie wiem ale poprzednich rzeczach mi to działało, a obecnie coś nie chce :/

Cześć.

Rozwiązałem problem.
Błąd polegał na tym, że odczytywałem ścieżkę przez:

  1. public function getWebPath()
  2. {
  3. return null === $this->image ? null : $this->getUploadDir().'/'.$this->image;
  4. }


a powinno być:

  1. public function getWebPath($name='')
  2. {
  3. if($name!='') return null === $name ? null : $this->getUploadDir().'/'.$name;
  4. return null === $this->image ? null : $this->getUploadDir().'/'.$this->image;
  5. }


żal... biggrin.gif
Crozin
Tak swoją drogą w żadnym wypadku tego typu logiki nie powinieneś pchać w Doctrine'owskie encje (tak, wiem, że w dokumentacji jest taki przykład - dokumentacja jest zrypana tutaj) tylko w zupełnie osobną usługę.
kpt_lucek
@Crozin

Nie wiem czy byłeś, ale na ostatnim PHPCon'ie, koleś od Doctrine mówił dość wyraźnie wspomniał "Don't use that". smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.