UPDATED In my Symfony project,I am able to upload single image.Now I am trying to upload multiple images.
class ImageFile extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('images', FileType::class, array(
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple'
)
))
->add('save',SubmitType::class,array('label'=>'Insert Image','attr'=>array('class'=>'btn btn-primary','style'=>'margin-bottom:15px')))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => images::class
));
}
}
In my Images entity, I keep an array of SatellieImage objects like this.
class images
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @var satelliteImage[]
* @ORM\Column(name="images", type="string")
*
*/
private $images;
/**
* Set images
*
* @param string $images
*
* @return satelliteImage[]
*/
public function setImages($images)
{
$this->images = $images;
return $this->images;
}
/**
* Get images
*
* @return satelliteImage[]
*/
public function getImages()
{
return $this->images;
}
public function addImage($image)
{
$this->images[] = $image;
return $this;
}
}
And in my controller, I store the satelliteImage[] as $files and run a foreach loop to upload() each file (upload() function worked perfectly for single file)
public function uploadImages(Request $request)
{
$satelliteImage=new satelliteImage;
$images=new images();
$form = $this->createForm(ImageFile::class, $images);
$form->handleRequest($request);
$files=$images->getImages();
foreach ($files as $file){
$em=$this->getDoctrine()->getManager();
$file->upload();
$em->persist($satelliteImage);
$em->flush();
}
$this->addFlash(
'notice',
'Images inserted successfully'
);
return $this->redirectToRoute('satellite_images');
}
Problem : I get an error saying "Warning: Invalid argument supplied for foreach()" How do I fix this?