Ne pas persister un champ

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut salut !

Je débute sur Symfony 2 mais je suis déjà en charge de développer un site assez complet.

Aujourd'hui, je bute sur un problème dans un formulaire :

J'ai trois champs : Email, Question et un Captcha. Les champs Email et Question doivent être persistées en BDD, mais pas le champ Captcha, et je ne sais pas du tout comment m'y prendre.

Pouvez-vous m'aider :) ? Merci ;) !

+0 -0
Auteur du sujet

Question c'est l'entité.

Ci-dessous le code complet dans le contrôleur. (Etant débutant, j'accepte toutes remarques ^^')

 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
<?php 
public function faqAction(Request $request)
    {
        $question = new Question();

        $form = $this->createFormBuilder($question)
            ->add('email',      'email')
            ->add('question',   'text')
            ->add('send',       'submit')
            ->add('captcha',    'genemu_captcha')
            ->getForm()
        ;

        $form->handleRequest($request);

        if ($form->isValid()) {
            $send = $this->get('fh.mailer')->sendContactMessage(
                $form->get('email')->getData(),
                '[FaQ] Nouvelle question !',
                $form->get('question')->getData()
            );
            if ($send === 1) {
                $this->get('session')->getFlashBag()->add(
                    'notice',
                    'Question envoyée'
                );
                $em = $this->getDoctrine()->getManager();
                $em->persist($question);
                $em->flush();
                return $this->redirect($this->generateUrl('app_site_faq'));
            } else {
                $this->get('session')->getFlashBag()->add(
                    'error',
                    'Question non envoyée'
                );
            }
        }

Édité par Spoilt

+0 -0

Cette réponse a aidé l'auteur du sujet

Salut !

Il faudrait que tu spécifies, dans les options du champ captcha, que le paramètre mapped vaut false

Ce qui ferait quelque chose comme ça, je dirais :

1
2
3
4
5
6
<?php
// …
            ->add('captcha', 'genemu_captcha', array(
                'mapped' => false
            ))
// …

Spécification du fait que le champ captcha n'est pas à persister dans l'entité

Du coup, il faut quand-même récupérer les données et valider avant la persistance, mais au moins il n'y a pas le captcha dans ce que tu mets en BDD.

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte