Witam.
Mam mały kłopot z multiupload plików. Problem to otrzymywany wynik z pola typu file.
Dostaję:
object
(Symfony\Component\HttpFoundation\
File\UploadedFile
)#12 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(15) "logout-icon.png"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(9) "image/png"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(13072)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(0)
["pathName":"SplFileInfo":private]=>
string(14) "/tmp/php9Qqolq"
["fileName":"SplFileInfo":private]=>
string(9) "php9Qqolq"
}
object
(Symfony\Component\HttpFoundation\
File\UploadedFile
)#13 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(15) "logout-icon.png"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(9) "image/png"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(13072)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(0)
["pathName":"SplFileInfo":private]=>
string(14) "/tmp/phpn9jWZ8"
["fileName":"SplFileInfo":private]=>
string(9) "phpn9jWZ8"
}
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
class AdImage {
private $images;
public function setImages($images = null) {
$this->images = $images;
return $this;
}
public function getImages() {
return $this->images;
}
}
Formularz: AdImageType:
class AdImageType extends AbstractType {
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('images', 'file')
}
}
Następnie powyższy formularz AdImageType dołączam do AdType
class AdType extends AbstractType {
public function buildForm
(FormBuilderInterface
$builder, array $options) { $builder
->add('adImages', 'collection',array( 'type' => new AdImageType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
))
}
Entity AdImages jest w relacji n:1 z Ad. Poniżej entity Ad odpowiedzialne za upload.
class Ad {
private $adImages;
public function __construct() {
$this ->adImages = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addAdImage(\Zaoferujta\FrontendBundle\Entity\AdImage $adImages)
{
$this->adImages->add($adImages);
$adImages ->setAd($this);
return $this;
}
public function removeAdImage(\Zaoferujta\FrontendBundle\Entity\AdImage $adImages)
{
$this->adImages->removeElement($adImages);
}
public function getAdImages()
{
return $this->adImages;
}
}
Wszystko wygląda dobrze, tablica plików widnieje w encji podczas zapisu.
["adImages":"Zaoferujta\FrontendBundle\Entity\Ad":private]=>
object(Doctrine\Common\Collections\ArrayCollection)#321 (1) {
["_elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
[0]=>
object(Zaoferujta\FrontendBundle\Entity\AdImage)#568 (5) {
["id":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
NULL
["name":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
NULL
["path":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
}
["ad":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
*RECURSION*
["images":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
object
(Symfony\Component\HttpFoundation\
File\UploadedFile
)#12 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(15) "logout-icon.png"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(9) "image/png"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(13072)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(0)
["pathName":"SplFileInfo":private]=>
string(14) "/tmp/php9Qqolq"
["fileName":"SplFileInfo":private]=>
string(9) "php9Qqolq"
}
}
[1]=>
object(Zaoferujta\FrontendBundle\Entity\AdImage)#556 (5) {
["id":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
NULL
["name":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
NULL
["path":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
}
["ad":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
*RECURSION*
["images":"Zaoferujta\FrontendBundle\Entity\AdImage":private]=>
object
(Symfony\Component\HttpFoundation\
File\UploadedFile
)#13 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(15) "logout-icon.png"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(9) "image/png"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(13072)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(0)
["pathName":"SplFileInfo":private]=>
string(14) "/tmp/phpn9jWZ8"
["fileName":"SplFileInfo":private]=>
string(9) "phpn9jWZ8"
}
}
}
}
}
Proszę o natchnienię