Symfony 4 - класс не реализует "Symfony \ Component \ Form \ FormTypeInterface" - PullRequest
0 голосов
/ 23 сентября 2019

Я действительно не понимаю, в чем проблема, Symfony 4 говорит, что "Class не реализует" Symfony \ Component \ Form \ FormTypeInterface "... У меня есть другая форма на моем сайте, которая почти такая же, и онаработает отлично. Большое спасибо, хорошей недели!

Моя форма:

<?php

namespace App\Form;

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

class ImageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', FileType::class, array(
                'label' => 'Choose your image'
            ))
            ->add('good_id')
        ;
    }
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => Image::class,
    ]);
}
}

Мой контроллер:

<?php

namespace App\Controller;

use App\Entity\Image;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;

class ImageController extends AbstractController
{
    public function index(Request $request, ObjectManager $manager)
    {
        $image = new Image();
        $form = $this->createForm(Image::class, $image);
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid())
        {
            $manager->persist($image);
            $manager->flush();
            return $this->redirectToRoute("/");
        }

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

1 Ответ

0 голосов
/ 23 сентября 2019

Вы пытаетесь создать форму с помощью Image :: class (Entity)

 $form = $this->createForm(Image::class, $image);

Попробуйте использовать форму:

$form = $this->createForm(App\Form\ImageType::class, $image);

См. здесь

...