IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajouter un champ texte dans un formulaire


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut Ajouter un champ texte dans un formulaire
    Bonjour,

    Actuellement en train de développer un forum, je bloque au niveau de la création d'un sujet.

    J'ai 4 entités : Catégorie, Sujet, Post et User.

    Sujet a une relation OneToMany avec Post (Un sujet peut contenir plusieurs posts, Un post ne peut être que dans un seul sujet)

    J'ai crée un formulaire avec make:form en lui indiquant l'entité Sujet, j'ai rajouté dessus une liste de choix des catégories avec un EntityType et le titre du Sujet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $builder
            ->add('categorie', EntityType::class, [
                'class' => Categorie::class,
                'choice_label' => 'title'
            ])
            ->add('title', TextType::class, [
                'label' => false,
                'constraints' => [
                    new NotBlank([ 'normalizer' => 'trim' ]),
                    ],
                ])
    Jusque là tout va bien. Sauf que je ne sais pas comment choisir la propriété content de l'entité Post pour l'insérer dans le formulaire.

    Dans mon entité Sujet j'ai un tableau de Collection Post avec getPosts et addPost et removePost

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    /**
         * @return Collection|Post[]
         */
        public function getPosts(): Collection
        {
            return $this->posts;
        }
     
        public function addPost(Post $post): self
        {
            if (!$this->posts->contains($post)) {
                $this->posts[] = $post;
                $post->setSujet($this);
            }
     
            return $this;
        }
     
        public function removePost(Post $post): self
        {
            if ($this->posts->removeElement($post)) {
                // set the owning side to null (unless already changed)
                if ($post->getSujet() === $this) {
                    $post->setSujet(null);
                }
            }
     
            return $this;
        }
    Je vois pas comment jouer avec ca pour pouvoir récupérer le content de Post avec son TextAreaType.

    J’espère ne pas avoir été trop brouillon.

    EDIT : En ajoutant un simple champ add avec la propriété posts de l'entité Sujet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ->add('categorie', EntityType::class, [
                'class' => Categorie::class,
                'choice_label' => 'title'
            ])
            ->add('title', TextType::class, [
                'label' => false,
                'constraints' => [
                    new NotBlank([ 'normalizer' => 'trim' ]),
                    ],
                ])
            ->add('posts', TextareaType::class, [
     
            ]);
    et que je tente de valider le formulaire il m'affiche ca :

    Nom : Capture.PNG
Affichages : 101
Taille : 11,5 Ko

    Vous remerciant d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut
    Je me permets de relancer le sujet.

    Mo entité Sujet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    class Sujet
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=64)
         */
        private $title;
     
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        private $picture;
     
        /**
         * @ORM\Column(type="datetime")
         */
        private $createdAt;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $updatedAt;
     
        /**
         * @ORM\ManyToOne(targetEntity=Categorie::class, inversedBy="sujets")
         * @ORM\JoinColumn(nullable=false)
         */
        private $categorie;
     
        /**
         * @ORM\OneToMany(targetEntity=Post::class, mappedBy="sujet")
         */
        private $posts;
     
        /**
         * @ORM\ManyToOne(targetEntity=User::class, inversedBy="sujets")
         * @ORM\JoinColumn(nullable=false)
         */
        private $users;
    Mon entité Post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    /**
     * @ORM\Entity(repositoryClass=PostRepository::class)
     */
    class Post
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="datetime")
         */
        private $createdAt;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $updatedAt;
     
        /**
         * @ORM\ManyToOne(targetEntity=Sujet::class, inversedBy="posts")
         * @ORM\JoinColumn(nullable=false)
         */
        private $sujet;
     
        /**
         * @ORM\Column(type="text")
         * @Assert\Valid
         */
        private $content;
     
        /**
         * @ORM\ManyToOne(targetEntity=User::class, inversedBy="posts")
         * @ORM\JoinColumn(nullable=false)
         */
        private $users;

  3. #3
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut
    Je reviens vers vous au sujet du problème que je rencontre.

    J'ai pu afficher le champ content de l'entité Post.

    Le problème est que quand je soumets le formulaire j'ai ça comme erreur :

    Nom : Capture.PNG
Affichages : 69
Taille : 3,9 Ko

    J'ai fais quelques dumps voir ce qui se tramait mais j'avoue ne pas comprendre.

    Pour info, j'ai mis un data_class à null dans le champ du content sur le formulaire. C’était ce que le profiler me conseillait de faire

  4. #4
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut
    Bonjour,

    J'ai finalement trouvé la solution en ajoutant un champ add 'postContent' avec un mapped => false pour que Doctrine n'aille pas chercher d'entité avec ce nom là.
    Ensuite dans le setContent de l'entité Post je lui ai rajouté la variable contenant ce champ là.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter un champ texte dans mon formulaire
    Par mademoizel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/12/2010, 16h12
  2. [Doctrine] Ajout d'un champ texte dans un formulaire crée par Doctrine
    Par Malonix dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/03/2009, 11h53
  3. Ajouter zone de texte dans un formulaire continu
    Par nadia68 dans le forum IHM
    Réponses: 17
    Dernier message: 06/12/2006, 09h00
  4. ajout de champs input dans un formulaire
    Par MV1908 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/08/2006, 18h31
  5. Réponses: 8
    Dernier message: 08/02/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo