Symfony4 - błąd podczas tworzenia formularza w osobnej klasie

0

Mam klasę User:

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

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

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

    // other fields + getters and setters

}

Mam klasę, w której chcę zbudować fomularz:


class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username', TextType::class, [
                'required' => true,
                'label' => false
            ])
            ->add('password', PasswordType::class, [
                'required' => true,
                'label' => false
            ])
            ->add('save', SubmitType::class, [
                'label' => 'Submit'
            ]);
    }

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

W kontrolerze próbuję utworzyć formularz:

class MainController extends AbstractController
{
    /**
     * @Route("/", name="index")
     */
    public function index()
    {
        $user = new User();
        $form = $this->createForm(User::class, $user);

        return $this->render('index.html.twig', array(
            'form' => $form
        ));
    }
}

Pojawia się błąd podczas wywołania metody createForm:

Could not load type "App\Entity\User": class does not implement "Symfony\Component\Form\FormTypeInterface".

Tyle tylko, że w dokumentacji nie widziałem nigdzie żeby klasa reprezentująca encję implementowała interfejs FormTypeInterface.
Mogę go zaimplementować w klasie User - wówczas wywala exception:

The option "data" does not exist. Defined options are: "".
0

Znalazłem błąd, tą linię:

        $form = $this->createForm(User::class, $user);

Trzeba zamienić na:

        $form = $this->createForm(UserType::class, $user);

Funkcja createForm jako pierwszy parametr przyjmuje

FormType

1 użytkowników online, w tym zalogowanych: 0, gości: 1