Witam.

Mam mały kłopot z multiupload plików. Problem to otrzymywany wynik z pola typu file.

Dostaję:
  1. object(Symfony\Component\HttpFoundation\File\UploadedFile)#12 (7) {
  2. ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  3. bool(false)
  4. ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  5. string(15) "logout-icon.png"
  6. ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  7. string(9) "image/png"
  8. ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  9. int(13072)
  10. ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  11. int(0)
  12. ["pathName":"SplFileInfo":private]=>
  13. string(14) "/tmp/php9Qqolq"
  14. ["fileName":"SplFileInfo":private]=>
  15. string(9) "php9Qqolq"
  16. }
  17. object(Symfony\Component\HttpFoundation\File\UploadedFile)#13 (7) {
  18. ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  19. bool(false)
  20. ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  21. string(15) "logout-icon.png"
  22. ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  23. string(9) "image/png"
  24. ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  25. int(13072)
  26. ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  27. int(0)
  28. ["pathName":"SplFileInfo":private]=>
  29. string(14) "/tmp/phpn9jWZ8"
  30. ["fileName":"SplFileInfo":private]=>
  31. string(9) "phpn9jWZ8"
  32. }

a potrzebuję, to w postaci tablicy, każdy obiekt, to odrębna wartość tablicy.

Zacznijmy od klasy entity odpowiedzialnego za wygenerowanie typu pola file.

Entity: AdImages
  1. class AdImage {
  2.  
  3. private $images;
  4.  
  5. public function setImages($images = null) {
  6.  
  7. $this->images = $images;
  8.  
  9.  
  10. return $this;
  11. }
  12. public function getImages() {
  13.  
  14. return $this->images;
  15. }
  16. }


Formularz: AdImageType:

  1. class AdImageType extends AbstractType {
  2.  
  3. public function buildForm(FormBuilderInterface $builder, array $options) {
  4.  
  5. $builder
  6. ->add('images', 'file')
  7. }
  8. }


Następnie powyższy formularz AdImageType dołączam do AdType

  1. class AdType extends AbstractType {
  2.  
  3. public function buildForm(FormBuilderInterface $builder, array $options) {
  4. $builder
  5.  
  6. ->add('adImages', 'collection',array(
  7. 'type' => new AdImageType(),
  8. 'allow_add' => true,
  9. 'allow_delete' => true,
  10. 'by_reference' => false,
  11.  
  12. ))
  13. }


Entity AdImages jest w relacji n:1 z Ad. Poniżej entity Ad odpowiedzialne za upload.
  1. class Ad {
  2.  
  3. private $adImages;
  4.  
  5. public function __construct() {
  6.  
  7. $this ->adImages = new \Doctrine\Common\Collections\ArrayCollection();
  8.  
  9. }
  10. public function addAdImage(\Zaoferujta\FrontendBundle\Entity\AdImage $adImages)
  11. {
  12. $this->adImages->add($adImages);
  13. $adImages ->setAd($this);
  14.  
  15.  
  16. return $this;
  17. }
  18.  
  19. public function removeAdImage(\Zaoferujta\FrontendBundle\Entity\AdImage $adImages)
  20. {
  21. $this->adImages->removeElement($adImages);
  22. }
  23.  
  24. public function getAdImages()
  25. {
  26. return $this->adImages;
  27. }
  28. }


Wszystko wygląda dobrze, tablica plików widnieje w encji podczas zapisu.

  1. ["adImages":"Zaoferujta\FrontendBundle\Entity\Ad":private]=>
  2. object(Doctrine\Common\Collections\ArrayCollection)#321 (1) {
  3. ["_elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
  4. array(2) {
  5. [0]=>
  6. object(Zaoferujta\FrontendBundle\Entity\AdImage)#568 (5) {
  7. ["id":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  8. NULL
  9. ["name":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  10. NULL
  11. ["path":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  12. array(0) {
  13. }
  14. ["ad":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  15. *RECURSION*
  16. ["images":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  17. object(Symfony\Component\HttpFoundation\File\UploadedFile)#12 (7) {
  18. ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  19. bool(false)
  20. ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  21. string(15) "logout-icon.png"
  22. ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  23. string(9) "image/png"
  24. ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  25. int(13072)
  26. ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  27. int(0)
  28. ["pathName":"SplFileInfo":private]=>
  29. string(14) "/tmp/php9Qqolq"
  30. ["fileName":"SplFileInfo":private]=>
  31. string(9) "php9Qqolq"
  32. }
  33. }
  34.  
  35. [1]=>
  36. object(Zaoferujta\FrontendBundle\Entity\AdImage)#556 (5) {
  37. ["id":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  38. NULL
  39. ["name":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  40. NULL
  41. ["path":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  42. array(0) {
  43. }
  44. ["ad":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  45. *RECURSION*
  46. ["images":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
  47. object(Symfony\Component\HttpFoundation\File\UploadedFile)#13 (7) {
  48. ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  49. bool(false)
  50. ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  51. string(15) "logout-icon.png"
  52. ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  53. string(9) "image/png"
  54. ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  55. int(13072)
  56. ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  57. int(0)
  58. ["pathName":"SplFileInfo":private]=>
  59. string(14) "/tmp/phpn9jWZ8"
  60. ["fileName":"SplFileInfo":private]=>
  61. string(9) "phpn9jWZ8"
  62. }
  63. }
  64. }
  65. }
  66. }


Proszę o natchnienię dostal.gif