不考虑约束

时间:2019-06-19 06:35:41

标签: php symfony4

我正在为我的应用程序中的实体做准备。表单必须上传文件,因此我在实体文件中添加了断言。但是,当我提交表单时,验证器会给我一个错误,并告诉我字段图像必须是字符串。我已经上传了一百次文件,这就是为什么我这次不明白为什么验证程序包会这样反应。

我的实体:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="App\Repository\AlgorithmeRepository")
 */
class Algorithme
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $titre;

    /**
     * @ORM\Column(type="date")
     */
    private $dateCreationArticle;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     *
     * @Assert\File(mimeTypes={ "image/jpeg","image/png"})
     */
    private $image;

    /**
     * @ORM\Column(type="array")
     */
    private $analyse = [];

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getTitre(): ?string
    {
        return $this->titre;
    }

    public function setTitre(string $titre): self
    {
        $this->titre = $titre;

        return $this;
    }

    public function getDateCreationArticle(): ?\DateTimeInterface
    {
        return $this->dateCreationArticle;
    }

    public function setDateCreationArticle(\DateTimeInterface $dateCreationArticle): self
    {
        $this->dateCreationArticle = $dateCreationArticle;

        return $this;
    }

    public function getImage()
    {
        return $this->image;
    }

    public function setImage($image)
    {
        $this->image = $image;

        return $this;
    }

    public function getAnalyse(): ?array
    {
        return $this->analyse;
    }

    public function setAnalyse(array $analyse): self
    {
        $this->analyse = $analyse;

        return $this;
    }
}

表格:

<?php

namespace App\Form;

use App\Entity\Algorithme;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class AlgorithmeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titre')
            ->add('dateCreationArticle',DateType::class,[
                'widget' => 'single_text',

                // prevents rendering it as type="date", to avoid HTML5 date pickers
                'html5' => false,

                // adds a class that can be selected in JavaScript
                'attr' => ['class' => 'js-datepicker'],
            ])
            ->add('image',FileType::class,[
                'required' => false,
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Algorithme::class,
        ]);
    }
}

和控制器:

<?php

namespace App\Controller;

use App\Entity\Algorithme;
use App\Form\AlgorithmeType;
use App\Repository\AlgorithmeRepository;
use App\Services\CreateFormForArray;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

/**
 * @Route("/algorithme")
 */
class AlgorithmeController extends AbstractController
{

    /**
     * @Route("/new", name="algorithme_new", methods={"GET","POST"})
     */
    public function new(Request $request): Response
    {
        $algorithme = new Algorithme();
        $form = $this->createForm(AlgorithmeType::class, $algorithme);
        $form->handleRequest($request);
//        die();
        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager = $this->getDoctrine()->getManager();

            $CreateFormForArray = new CreateFormForArray();

            $CreateFormForArray->handleArrayString($request,$algorithme,"analyse");

            $entityManager->persist($algorithme);
            $entityManager->flush();

            return $this->redirectToRoute('algorithme_index');
        } else {
        }

        return $this->render('algorithme/new.html.twig', [
            'algorithme' => $algorithme,
            'form' => $form->createView(),
        ]);
    }
}

1 个答案:

答案 0 :(得分:0)

我发现那些想知道是的人的问题

#auto_mapping:
#    App\Entity\: []

在config / packages / validator.yaml中没有注释的