Witam,
Piszę aplikację w symfony która daje możliwość uploadu wielu plików na raz. Niestety mam problem z formularzem. Mam następujący kod
Klasa Entity
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class DiaryContent
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $author_id;
/**
* @ORM\Column(type="text")
*/
protected $title;
/**
* @ORM\Column(type="text")
*/
protected $content;
/**
* @ORM\Column(type="datetime")
*/
protected $data;
/**
* @ORM\Column(type="text")
*/
protected $images;
public function __construct()
{
$this->images = new ArrayCollection();
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getAuthorId()
{
return $this->author_id;
}
/**
* @param mixed $author_id
*/
public function setAuthorId($author_id)
{
$this->author_id = $author_id;
}
/**
* @return mixed
*/
public function getTitle()
{
return $this->title;
}
/**
* @param mixed $title
*/
public function setTitle($title)
{
$this->title = $title;
}
/**
* @return mixed
*/
public function getContent()
{
return $this->content;
}
/**
* @param mixed $content
*/
public function setContent($content)
{
$this->content = $content;
}
/**
* @return mixed
*/
public function getData()
{
return $this->data;
}
/**
* @param mixed $data
*/
public function setData($data)
{
$this->data = $data;
}
/**
* @return mixed
*/
public function getImages()
{
return $this->images;
}
/**
* @param mixed $images
*/
public function setImages($images)
{
$this->images = $images;
}
}
Kod formularza
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\
FileType;use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class DiaryContentType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder->add('author_id')->add('title')->add('content')->add('data')->add('images', CollectionType
::class, array(
));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array( 'data_class' => 'AppBundle\Entity\DiaryContent'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_diarycontent';
}
}
oraz jego wywołanie w kontrolerze
$diaryContent = new DiaryContent();
$form = $this->createFormBuilder($diaryContent)
->add("title", TextType::class)
->add('content', TextareaType::class)
->add('images', CollectionType
::class, array( 'required' => false,
'mapped' => false,
'allow_add' => true,
))->getForm();
return $this->render('@App/Diary/new.html.twig', array( 'form' => $form->createView(),
));
Problem jest taki, że wyświetlają mi się wszystkie pola formularza, poza tym z CollectionType, jak zmienię na FileType to pokazuje tylko jeden plik. Ma ktoś jakieś sensowne pomysły? Ogólnie chciałbym zrobić formularz do uploadu zdjęć bez limitu, ale mi nie idzie.