0
私はこのエラーを取得し提出した後Symfony3Symfonyの複数の画像のアップロードは、ちょうど2つの画像
を使用して、複数のフォームで複数の画像をアップロードしようとしているを発見しました
コードについて申し訳ありませんが、私は配列やダミーのコードで多くの方法でそれをしようとしていたので、これは同じコードを持つ別のダミーのコードである第二の画像
public function homepageSecondManagementAction(Request $request)
{
$homepageENAll = $this->getDoctrine()->getRepository('ContentManagementSystemBundle:HomepageEN')->findAll();
$homepageCSAll = $this->getDoctrine()->getRepository('ContentManagementSystemBundle:HomepageCS')->findAll();
$homepageEN = [];
$homepageCS = [];
for ($x = 2; $x < 5; $x++) {
$homepageEN[] = $homepageENAll[$x];
$homepageCS[] = $homepageCSAll[$x];
}
$block1ENForm = $this->createForm(HomepageBlckHdrDsshENForm::class, $homepageEN[0]);
$block1CSForm = $this->createForm(HomepageBlckHdrDsshCSForm::class, $homepageCS[0]);
for ($x = 2; $x < 4; $x++) {
${"block" . $x . "ENForm"} = $this->createForm(HomepageHdrDsshENForm::class, $homepageEN[$x - 1]);
${"block" . $x . "CSForm"} = $this->createForm(HomepageHdrDsshCSForm::class, $homepageCS[$x - 1]);
}
$counter = 1;
foreach ($homepageEN as $key => $value) {
${"image" . $counter} = $value->getHomepageImageMain()[0];
${"file" . $counter} = (!empty(${"image" . $counter}) ? ${"image" . $counter}->getFile() : null);
${"imageForm" . $counter} = $this->createForm(ImageUploadForm::class, ${"image" . $counter});
$counter++;
}
for ($x = 1; $x < 4; $x++) {
${"block" . $x . "ENForm"}->handleRequest($request);
${"block" . $x . "CSForm"}->handleRequest($request);
${"imageForm" . $x}->handleRequest($request);
}
$validForm = true;
for ($x = 1; $x < 4; $x++) {
if (!${"block" . $x . "ENForm"}->isSubmitted() && !${"block" . $x . "CSForm"}->isSubmitted() &&
!${"imageForm" . $x}->isSubmitted()
) {
$validForm = false;
}
}
if ($validForm) {
$entityManager = $this->getDoctrine()->getManager();
for ($x = 1; $x < 4; $x++) {
${"block" . $x . "EN"} = ${"block" . $x . "ENForm"}->getData();
${"block" . $x . "CS"} = ${"block" . $x . "CSForm"}->getData();
${"block" . $x . "EN"}->setBlockName($block1EN->getBlockName());
${"block" . $x . "CS"}->setBlockName($block1CS->getBlockName());
$entityManager->persist(${"block" . $x . "EN"});
$entityManager->persist(${"block" . $x . "CS"});
${"image" . $x} = ${"imageForm" . $x}->getData();
dump(${"image" . $x});
if (${"image" . $x}->getFile() != null) {
${"file" . $x} = ${"image" . $x}->getFile();
${"fileName" . $x} = $this->get('app.image_uploader')->upload(${"file" . $x});
${"image" . $x}->setFile(${"fileName" . $x});
${"image" . $x}->setHomepageImageMain($homepageEN[$x - 1]);
$entityManager->persist(${"image" . $x});
}
}
$entityManager->flush();
$this->addFlash('success', 'Edited');
return $this->redirectToRoute('cms');
}
return $this->render('backEnd/editSecondHomepage.html.twig', [
'block1EN' => $block1ENForm->createView(),
'block1CS' => $block1CSForm->createView(),
'block2EN' => $block2ENForm->createView(),
'block2CS' => $block2CSForm->createView(),
'block3EN' => $block3ENForm->createView(),
'block3CS' => $block3CSForm->createView(),
'imageForm1' => $imageForm1->createView(),
'imageForm2' => $imageForm2->createView(),
'imageForm3' => $imageForm3->createView()
]);
}
homepageformsは画像
せずに作業している画像形式は
class ImageUploadForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('file', FileType::class, array(
'required' => false,
'data_class' => null,
'property_path' => 'file'
))
->add('alternative', TextType::class, array(
'required' => false,
'empty_data' => false))
->add('imgTitle', TextType::class, array(
'required' => false,
'empty_data' => false))
->add('imgDescription', TextareaType::class, array(
'required' => false,
'empty_data' => false));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Image::class
]);
}
}
があり、イメージ・エンティティの一部
**
* @ORM\Entity
* @ORM\Table(name="image")
* @ORM\HasLifecycleCallbacks
*/
class Image
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
* @Assert\File(
* maxSize = "5M",
* mimeTypes = {"image/jpeg", "image/gif", "image/png", "image/tiff"},
* maxSizeMessage = "The maximum allowed file size is 5MB.",
* mimeTypesMessage = "Only image is allowed."
*)
*/
protected $file;
ここでは、アップローダーはそれが一つのファイルに取り組んでいる、アップローダーがあるさテスト済み
use Symfony\Component\HttpFoundation\File\UploadedFile;
class FileUploader
{
private $targetDir;
public function __construct($targetDir)
{
$this->targetDir = $targetDir;
}
public function upload(UploadedFile $file)
{
$fileName = md5(mt_rand()) . '.' . $file->guessExtension();
$file->move($this->targetDir, $fileName);
return $fileName;
}
}
succesfulyアップロードして2つ以上の画像を保存するために必要なことは?
でも、最初と2番目のファイルはtmpファイルからも読み込まれました。私はそれをチャージします。また、小さなjpegファイルをアップロードしようとしています。 –