コレクション フィールド タイプを使用せずに複数ファイルのアップロードを作成するにはどうすればよいでしょうか。問題は、クラスがあり、このクラスで画像をリンクする必要があるということです。これらの画像には説明やその他の種類の情報は必要ないため、メイン エンティティに追加のフィールドを作成するだけです。それから私は追加します
->add('files', 'file', array(
'label' => 'Images',
'required' => false,
'attr' => array(
'accept' => 'image/*',
'multiple' => true
)
そのフォームクラスとこれ:
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
if (!empty($this->files)) {
if (!empty($this->images)) {
$this->insertingKey = $this->images->count();
}
foreach ($this->files as $file) {
$imageName = uniqid('entity_') . '_' . date('Y-m-d_H:i') . '.' . $file->guessExtension();
if ($this->images === null) {
$this->images = new ArrayCollection();
}
$this->images->add($imageName);
}
}
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
if (empty($this->files)) {
return;
}
if ($this->insertingKey) {
foreach ($this->files as $file) {
$file->move($this->getUploadRootDir(), $this->images[ $this->insertingKey++ ]);
}
} else {
foreach ($this->files as $key => $file) {
$file->move($this->getUploadRootDir(), $this->images[ $key ]);
}
}
}
私のエンティティクラスのドクトリンイベントとして、そしてもちろん、ファイルフィールドを配列のように機能させます。しかし、私の問題は、2 回目に画像を追加できないことです。たとえば、すでにいくつかの画像をアップロードしていて、さらにアップロードすることにした場合、それらは物理的にアップロードされますが (プロジェクト ディレクトリで見ることができます)、ページには何も変更がありません。
アドバイスをいただけますか?または、多くのファイルをアップロードし、同時にフォーム フィールドを 1 つだけにする方法が他にあるでしょうか。まことにありがとうございます。