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

Symfony PHP Discussion :

probléme formBuilder symfony2


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Par défaut probléme formBuilder symfony2
    bonjour,
    je veux ajouter un Customers dans la base de donnée voila mes classes :
    CustomersType:
    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
     
    <?php
    namespace Customers\CustomerBundle\Form;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class CustomersType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
     $builder
            ->add('name')
            ->add('adress')
            ->add('tel1')
            ->add('tel2')
            ->add('fax')
            ->add('email')
            ->add('matriculeFiscale')
            ->add('registreCommerce')
            ->add('managerName')
            ->add('managerTel')
            ->add('managerEmail')
            ->add('loginProvider')
            ->add('passwordProvider')
            ->add('login')
            ->add('password')
            ->add('ipAutorized') 
            ->add('idCategorie','entity', array('class'=>'data\baseBundle\Entity\Categories','property'=>'idCategorie', )); 
        }
     
        public function getName()
        {
            return 'Customers_CustomerBundle_Customers_Type';
        }
         public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'data\baseBundle\Entity\Customers',
            );
    }
    }
    ?>
    CustomersHandler :
    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
    46
    47
    48
    49
    50
    51
     
    <?php
     
    namespace Customers\CustomerBundle\Form;
     
    use Symfony\Component\Form\Form;
    use Symfony\Component\HttpFoundation\Request;
    use Doctrine\ORM\EntityManager;
    use data\baseBundle\Entity\Customers;
    use data\baseBundle\Entity\Categories;
    use Symfony\Component\HttpFoundation\Response;
     
    class CustomersHandler
    {
        protected $form;
        protected $request;
        protected $em;
     
        public function __construct(Form $form, Request $request, EntityManager $em )
        {
            $this->form    = $form;
            $this->request = $request;
            $this->em      = $em;
     
        }
     
        public function process()
        { 
            if( $this->request->getMethod() == 'POST' )
            { 
                $this->form->bindRequest($this->request);
     
                if( $this->form->isValid())
                {   return new Response("Hello World !");
                    $this->onSuccess($this->form->getData());
     
                    return true;
                }
            }
     
            return false;
        }
     
        public function onSuccess(Customers $Customers)
        {  
            $Customers->setDateCreation(new \DateTime());
            $this->em->persist($Customers);
            $this->em->flush();
        }
    }
    ?>

    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
     
    <?php
     
    namespace Customers\CustomerBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use data\baseBundle\Entity\Customers;
    use Customers\CustomerBundle\Form\CustomersType;
    use Customers\CustomerBundle\Form\CustomersHandler;
    class CustomersController extends Controller
    {
     
     
    public function ajouterAction()
     
    {
       $Customers = new Customers;
       $form = $this->createForm(new CustomersType, $Customers);
        // On crée le gestionnaire pour ce formulaire, avec les outils dont il a besoin
       $formHandler = new CustomersHandler($form, $this->get('request'), $this->getDoctrine()->getEntityManager());
     
        // On exécute le traitement du formulaire. S'il retourne true, alors le formulaire a bien été traité
            if( $formHandler->process() )
            {
                 return $this->render('CustomersCustomerBundle::test.html.twig');
            }
     
         return $this->render('CustomersCustomerBundle::ajouter.html.twig',array(
            'form' => $form->createView(),)
             );
         }
    }
     
    ?>
    le probléme que l'exécution ne traverse pas la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     if( $this->form->isValid())
                {   return new Response("Hello World !");//pour le test
                    $this->onSuccess($this->form->getData());
     
                    return true;
                }
    aucun erreur n'est survenue mais l'ajout dans la base ca marche pas,
    avez vous une aide?
    merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Par défaut
    Bonjour,

    Citation Envoyé par fahdiraed Voir le message
    aucun erreur n'est survenue mais l'ajout dans la base ca marche pas,
    Est-ce que tu affiches les erreurs de validation du formulaire dans ta vue ?

  3. #3
    Membre éclairé Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Par défaut
    voici le template twig:
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <form method="post" {{ form_enctype(form) }}>
     
        <div>  
     
          {{ form_widget(form.name) }}
          {{ form_errors(form.name) }}
        </div>
        <div>  
            {{ form_widget(form.adress) }}
            {{ form_errors(form.adress) }}
        </div>
         <div>  
            {{ form_widget(form.tel1) }}
            {{ form_errors(form.tel1) }}
        </div>
       <div>  
            {{ form_widget(form.tel2) }}
            {{ form_errors(form.tel2) }}
        </div>
        <div>  
            {{ form_widget(form.fax) }}
            {{ form_errors(form.fax) }}
        </div>
        <div>  
            {{ form_widget(form.email) }}
            {{ form_errors(form.email) }}
        </div>
        <div>
        {{ form_widget(form.matriculeFiscale) }}
        {{ form_errors(form.matriculeFiscale) }}
        </div>
        <div> 
         {{ form_widget(form.registreCommerce) }}
         {{ form_errors(form.registreCommerce) }}
        </div>
        <div> 
        {{ form_widget(form.managerName) }}
        {{ form_errors(form.managerName) }}
        </div>     
        <div>
        {{ form_widget(form.managerTel) }}
        {{ form_errors(form.managerTel) }}
        </div>  
        <div>
        {{ form_widget(form.managerEmail) }}
        {{ form_errors(form.managerEmail) }}         
        </div>   
        <div>
        {{ form_widget(form.loginProvider) }}
        {{ form_errors(form.loginProvider) }}
        </div> 
        <div>
        {{ form_widget(form.passwordProvider) }}
        {{ form_errors(form.passwordProvider) }}
        </div> 
        <div>
        {{ form_widget(form.login) }}
        {{ form_errors(form.login) }}       
        </div>
        <div>
        {{ form_widget(form.password) }}
        {{ form_errors(form.password) }}  
        </div>
        <div>
        {{ form_widget(form.ipAutorized) }}
        {{ form_errors(form.ipAutorized) }}
        </div>
        {{ form_widget(form.idCategorie) }}  
     
    	<input type="submit" />
    </form>
    pas des erreurs pour les saisies

  4. #4
    Membre éclairé Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Par défaut
    j'ai fait un simple exemple :c'est la méme chose
    voici l'exemple:
    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
     
    <?php
     
    namespace data\baseBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use data\baseBundle\Entity\Categories;
     
    class DefaultController extends Controller
    {
     
        public function indexAction()
        { 
            $Categories = new Categories();
            $formBuilder = $this->createFormBuilder($Categories);
            $formBuilder->add('libelle','text');
            $form = $formBuilder->getForm();
     
     
        $request = $this->get('request');
     
     
        if( $request->getMethod() == 'POST' )
        {
     
            $form->bindRequest($request);
            if( $form->isValid() )
            {
     
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($Categories);
                $em->flush();
     
     
     
            }
        }
        return $this->render('databaseBundle:Default:index.html.twig', array(
            'form' => $form->createView(),
        ));
        }
    }
    mais l'orsque je n'utilise pas le formBuilder j'utilse tout s'implement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $Categories = new Categories();
    $Categories->setLibelle("call_centre");
     $em = $this->getDoctrine()->getEntityManager();
     $em->persist($Categories);
     $em->flush();
    dans ce cas là cà marche je sais pas pourquoi cà marche pas l'orsque j'utilise le formBuilder , je suis coicée à ce niveau ,
    merci d'avance.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Par défaut
    Fait un var_dump de ta variable $Categories avant de la passer à la méthode persist et tu vas sans doute t'apercevoir d'une différence entre les deux codes que tu viens de montrer.

  6. #6
    Membre éclairé Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Par défaut
    oui exactement cà marche ,merci beaucoup

Discussions similaires

  1. [2.x] [Symfony2] Problème pour accéder à une valeur
    Par cbtraize42 dans le forum Symfony
    Réponses: 7
    Dernier message: 09/03/2012, 18h27
  2. [2.x] problème de déploiement symfony2 sur olympe-network
    Par maarek dans le forum Symfony
    Réponses: 1
    Dernier message: 06/03/2012, 12h50
  3. [2.x] problème performance symfony2
    Par rafleboss dans le forum Symfony
    Réponses: 6
    Dernier message: 01/12/2011, 14h01
  4. [2.x] Problème avec symfony2 suite mise en prod sur serveur
    Par scrappilly dans le forum Symfony
    Réponses: 8
    Dernier message: 19/10/2011, 17h20
  5. [2.x] [Symfony2]Problème de routage
    Par Charvalos dans le forum Symfony
    Réponses: 3
    Dernier message: 22/09/2011, 10h15

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