Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SF4] Récupérer variable POST

8 octobre 2021 à 19:38:04

Bonjour, voila je rencontre un problème depuis ce matin. J'essaie d'acceder aux attribut de mon formulaire en faisant un var dump depuis mon controller et je recois NULL. Les valeurs sont bien récupérées par $request->request->all, en var dump de $request j'ai toutes les informations rentrées dans le formulaire. Ensuite quand j'attribue la valeur d'un input a une variable en faisant $machant = $request->request->get('qtedem') qui existe bien, sa valeur est null pourtant en dumpant $resquest j'ai bien la valeur de qtedem.

J'ai vraiment besoin d'aide et toute aide serait la bienvenue. MERCI

-
Edité par Benzouye 11 octobre 2021 à 9:08:02

  • Partager sur Facebook
  • Partager sur Twitter
9 octobre 2021 à 9:18:08

Bonjour,

Si tu parles de récupérer les données du formulaire après le submit c'est :

$data = $form->getData();

pour récupérer toutes les données du formulaire.

Quand tu postes, n'hésite pas à mettre ton code, c'est souvent plus explicite qu'une description texte.

A+

  • Partager sur Facebook
  • Partager sur Twitter
9 octobre 2021 à 23:43:45

En haut c'est mon formulaire, Je veux permettre a l'utilisateur de selectionner plusieurs designations ensuite de separer les qte par des tirerts(j'aurai souhaité faire une quantité pour chaque designation). Les designations sont issues de ma BD que j'ai groupby par nom et marque. Au moment du submit je recupere le tableau et je fais un foreach pour enregistrer les valeurs individuellement. J'aimerais ajouter un champ input devant chaque designation mais avec les add du form builder je ne sais pas comment m'y prendre. Ci apres mon form Type:

->add('designationdem', EntityType::class,[
'class' => MatBur::class,
'query_builder' => function(MatBurRepository $em){
return $em->createQueryBuilder('g')
->groupBy('g.tmatburs,g.nmatbur','g.marque');
},
'choice_label' => function ($data){
return $data->getnmatbur().'_'. $data->getmarque();
},
//'choices' => 'marque' 'nmatbur',
'label' => 'Designation',
'multiple' => true,
'expanded' => false,
'required' => true
])

->add('qtedem', null, [
'label' => 'Qte',
'attr' => ['placeholder' => 'ex. 2-1-etc']
])

formulaire d'expression de besoin

En haut c'est mon formulaire, Je veux permettre a l'utilisateur de selectionner plusieurs designations ensuite de separer les qte par des tirerts(j'aurai souhaité faire une quantité pour chaque designation). Les designations sont issues de ma BD que j'ai groupby par nom et marque. Au moment du submit je recupere le tableau et je fais un foreach pour enregistrer les valeurs individuellement. Je joins a la suite le formtype pour aide.

formulaire d'expression de besoin

-
Edité par tangeraymond 10 octobre 2021 à 0:03:06

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2021 à 6:03:28

J'avoue ne plus comprendre : la nouvelle réponse n'a rien à voir avec la question initiale. Ma réponse ne t'a pas intéressée ?

Pour la seconde question, les quantités ne sont-elles pas des propriétés d'une entité ? Si oui alors cela s'ajoute dans le formulaire simplement si non quelle est la raison de ne pas avoir les quantités en propriété ? car je suppose que tu voudras bien les sauvegarder.

Pourquoi répéter 2 fois la même description ? faut se relire ... 

A+

-
Edité par monkey3d 10 octobre 2021 à 6:04:51

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2021 à 15:40:02

Bonjour Monkey, dsl du retard dans mes reponses. Ta premiere reponse m'a interessé. au fait j'ai loreille dure depuis toujours. Desolé de ne pas comprendre du premier coup. Oui Designation et quantité sont des proprietés de Expression de Besoin. Je voulais permettre a l'agent de selectionner plusieurs designation et des quantités differente. J'aurai fait un foreach sur Designation et un explode pour les quantites. Je l'avais deja fait quand je codais le meme projet en php poo. Au moins ca eviterait de rentrer une designation et sa quantité a chaque fois et d'eviter le rechargement de la a chaque fois. Merci infiniement pour ton aide, Pour le form builder au niveau de Add qtedem, quand je mets EntityType dans le formulaire d'affichage il ne me donne pas le curseur voila pourquoi j'ai mis null pour permettre a l'utilisateur de rentrer sa valeur

-
Edité par tangeraymond 10 octobre 2021 à 15:44:19

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2021 à 17:13:37

Si ton besoin est de retrouver les valeurs saisies dans le formulaire après le submit je t'ai donné la réponse dans mon premier post.

Pour le besoin que j'ai du mal à comprendre, si tu veux ajouter différentes désignations avec leur quantité il faut regarder je pense ceci :

https://symfony.com/doc/current/form/form_collections.html

Moi je m'en sers par exemple dans une recette de cuisine où j'ajoute les différents ingrédients avec leur quantité nécessaires à la recette.

A+

  • Partager sur Facebook
  • Partager sur Twitter
14 octobre 2021 à 21:05:02


Bonsoir Monkey, 

j'espère ne pas trop te deranger. Je fais face a un soucis, j'ai creer deux forms pour l'edition du user et du mot de passe fonc editformUserType et changepasswordformtype. Tout fonctionne bien mais lorsque l'admin ou le user modifie le mot de pass, c'est bien changé car la chaine d'encodage en base de données change aussi. mais l'utilisateur ayant modifier son password se déconnecte et n'arrive plus a se connecter. Meme quand c'est l'admin qui change le password d'un user, ce dernier n'arrive plus a se connecter.

Je te mets le passwordform type et sa methode pour que tu m'eclaire. Merci

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username')
            ->add('plainpassword',PasswordType::class, [
                'label' => 'Nouveau Mot de passe',
                //'attr' => ['class' => 'col-lg-6 col-md-4 col-sm-6 m-auto']

            ])

            ->add('save', SubmitType::class,[
                'attr' => ['class' => 'btn-sm btn-primary float-right']

            ])
        ;
    }

et voici sa methode:

public function passwordEditAction(Request $request, int $id, UserPasswordEncoderInterface $encoder): Response
    {
        $finduser = $this->getDoctrine()->getRepository(User::class)->find($id);
        $form = $this->createForm(ChangepasswordType::class, $finduser);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()){
            if (! $request->request->get('plainpassword')){
                $plainpassword = $request->request->get('plainpassword');
                //$newpass = $encoder->encodePassword($finduser, 'plainpassword');
                $encoded = $encoder->encodePassword($finduser, $plainpassword);
                $finduser->setPassword($encoded);
                $em = $this->getDoctrine()->getManager();
                $em->persist($finduser);
                $em->flush();
                return $this->redirectToRoute('admin');

            }
        }

        return $this->render('admin/editpass.html.twig',[
            'form_title' => 'Modifier le mot de passe',
            'form_pass' => $form->createView()
        ]);

    }




  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2021 à 7:38:51

Alors sur ce forum c'est un fil de discussion par sujet et là depuis le début tu en es à 3 questions complètement différentes.

Donc poste ta dernière question dans un nouveau sujet :

1) tu respecteras les règles du forum

2) tu auras plus de chance d'avoir des réponses pertinentes car comment deviner en lisant ton titre que tu poses désormais un sujet sur le mot de passe.

A+

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2021 à 8:49:25

Bonjour,

Déterrage

Citation des règles générales du forum :

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL