Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

Problèmes forms

$
0
0

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.


Viewing all articles
Browse latest Browse all 1542

Trending Articles