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: "".