Bonjour,
Voilà j'essaie désepérement de faire fonctionner un formulaire sous Symfony 4. Mais voilà quoi que je fasse je n'arrive pas à renvoyer à mon controller les datas de mon formulaire.
Voilà ce que j'ai fais et les fichiers que j'ai créer pour
- Un fichier entity User.php :
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
*/
private $password;
/**
* @ORM\Column(type="string", length=255)
*/
private $mail;
/**
* @ORM\Column(type="string", length=255)
*/
private $firstName;
/**
* @ORM\Column(type="string", length=255)
*/
private $LastName;
public function getId(): ?int
{
return $this->id;
}
public function getUsername(): ?string
{
return $this->username;
}
public function setUsername(string $username): self
{
$this->username = $username;
return $this;
}
public function getPassword(): ?string
{
return $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function getMail(): ?string
{
return $this->mail;
}
public function setMail(string $mail): self
{
$this->mail = $mail;
return $this;
}
public function getFirstName(): ?string
{
return $this->firstName;
}
public function setFirstName(string $firstName): self
{
$this->firstName = $firstName;
return $this;
}
public function getLastName(): ?string
{
return $this->LastName;
}
public function setLastName(string $LastName): self
{
$this->LastName = $LastName;
return $this;
}
}
- Un fichier UserType.php :
<?php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', TextType::class, [
'invalid_message' => 'Usermname problems',
])
->add('password', TextType::class, [
'invalid_message' => 'Password problems',
])
->add('mail', TextType::class, [
'invalid_message' => 'Mail problems',
])
->add('firstName', TextType::class, [
'invalid_message' => 'FirstName problems',
])
->add('LastName', TextType::class, [
'invalid_message' => 'LastName problems',
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}
- Un controller HomeController.php :
<?php
namespace App\Controller;
use App\Entity\User;
use App\Form\UserType;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
/**
* @Route("/", name="home")
*/
public function index()
{
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
]);
}
/**
* @Route("/user/create", name="create")
*/
public function create(Request $request, ObjectManager $manager)
{
$user = new User();
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
$user = $form->getData();
if ($form->isSubmitted()){
echo "Dans le isSubmitted";
if ($form->isValid()) {
echo "Dans le isvalid";
// $entityManager->persist($user);
// $entityManager->flush();
// return $this->redirectToRoute('/');
}
}
return $this->render('home/index.html.twig', [
'form' => $form->createView(),
'user' => $user,
]);
}
}
- Une vue index.html.twig :
{% extends 'base.html.twig' %}
{% block title %}Hello HomeController!{% endblock %}
{% block body %}
{%if form is defined %}
{{form_start(form)}}
{{form_row(form.username)}}
{{form_row(form.password)}}
{{form_row(form.mail)}}
{{form_row(form.firstName)}}
{{form_row(form.LastName)}}
<button type="submit">Envoyer</button>
{{form_end(form)}}
{% endif %}
{%if user is defined %}
{{dump(user)}}
{% endif %}
{% endblock %}
Si je mets juste un {{form_widget(form)}}, lors de la validation de mon formulaire je récupère une erreur de type => "The uploaded file was too large. Please try to upload a smaller file". Déjà je comprend pas pourquoi ça fait ceci.
Ensuite voilà ce que je récupère niveau data :
User^ {#437 ▼
-id: null
-username: null
-password: null
-mail: null
-firstName: null
-LastName: null
}
Si certaine pouvez éclairer ma lanterne car la je séche.
Merci pour votre aide.