Ограничение не принимается во внимание - PullRequest
1 голос
/ 19 июня 2019

Я делаю грубые слова для сущности в моем приложении. Форма должна загрузить файл, поэтому я добавил assert в файл объекта. Но когда я отправляю свою форму, валидатор выдаёт мне ошибку и говорит мне, что изображение поля должно быть строкой. Я делал загрузку файла сто раз, поэтому на этот раз я не понимаю, почему связки валидаторов так реагируют.

Моя сущность:

<?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 голосов
/ 19 июня 2019

Я обнаружил, что проблема для тех, кому интересно, была

#auto_mapping:
#    App\Entity\: []

, которая была раскомментирована в config / packages / validator.yaml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...