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 :

deux formulaire d'insertion à la base de données pour une seule entité


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Points : 4
    Points
    4
    Par défaut deux formulaire d'insertion à la base de données pour une seule entité
    Bonjour je suis noviste sur symfony je rencontre un problème.
    pour la creation d'offre d'emploi j'ai deux espace celui du super admin et d'un simple admin. le simple admin tout comme le super admin doivent tout les deux pouvoir inserer dans la même table offre de la base de données.

    pour le faire j'ai creer deux controller et deux formulaire et egalement deux template twig

    offreController.php
    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
     
    <?php
     
    namespace AppBundle\Controller;
     
    use AppBundle\Entity\Offre;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\Extension\Core\Type\DateType;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\HttpFoundation\Response;
    use AppBundle\Form\OffreForm;
    use AppBundle\Entity\Entreprise;
     
    class OffreController extends Controller
    {
     
     /**
         * Matches /Offre exactly
         *
         * @Route("/offre", name="Ofrre_creer")
         */
        public function creerAction(Request $request)
        {
              // On crée un objet Ville
    			$offre = new Offre();		
    			// On crée le FormBuilder grâce au service form factory
    			$form = $this->createForm(OffreForm::class, $offre);
    						 $form->handleRequest($request);
     
        if ($form->isSubmitted() && $form->isValid()) {
            // $form->getData() holds the submitted values
            // but, the original `$task` variable has also been updated
    			$file = $offre->getFichier();
     
                $fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
            $file->move(
                    $this->getParameter('brochures_directory'),
                    $fileName
                );
     
    			$offre->setFichier($fileName);
    		$file = $offre->getFichier();
     
            // ... perform some action, such as saving the task to the database
            // for example, if Task is a Doctrine entity, save it!
             $entityManager = $this->getDoctrine()->getManager();
             $entityManager->persist($offre);
            $entityManager->flush();
    	        return $this->render('Default/offreta.html.twig', array(
                'form' => $form->createView(),
            ));
        }
    }
    OffreEntrepriseController le code qui n'agit sur la base de données mais j'ai le formulaire qui marche bien

    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
     
    <?php
     
    namespace AppBundle\Controller;
     
    use AppBundle\Entity\Offre;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\Extension\Core\Type\DateType;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\HttpFoundation\Response;
    use AppBundle\Form\OffreType;
    use AppBundle\Entity\Entreprise;
     
    class OffreEntrepriseController extends Controller
    {
     
     /**
         *
         * @Route("/entreprise/deposer/offre", name="entreprise_deposer_offre")
         */
        public function creerAction(Request $request)
        {
              // On crée un objet Offre
    			$dili = new Offre();		
    			// On crée le FormBuilder grâce au service form factory
    			$form = $this->createForm(OffreType::class, $dili);
    						 $form->handleRequest($request);
     
        if ($form->isSubmitted() && $form->isValid()) {
            // $form->getData() holds the submitted values
            // but, the original `$task` variable has also been updated
    			$file = $dili->getFichier();
     
                $fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
            $file->move(
                    $this->getParameter('brochures_directory'),
                    $fileName
                );
     
    			$dili->setFichier($fileName);
    		$file = $dili->getFichier();
     
            // ... perform some action, such as saving the task to the database
            // for example, if Task is a Doctrine entity, save it!
             $entityManager = $this->getDoctrine()->getManager();
             $entityManager->persist($dili);
            $entityManager->flush();
     
        }
     
            return $this->render('Offre/deposerOffre.html.twig', array(
                'form' => $form->createView(),
            ));
        }
    }
    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
     
    <?php
    // src/AppBundle/Form/FomType.php
    namespace AppBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    //use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use AppBundle\Entity\Ville;
    use AppBundle\Entity\Offre;
    use AppBundle\Entity\Contrat;
    use AppBundle\Entity\Entreprise;
    use Symfony\Component\Form\Extension\Core\Type\FileType;
    use Symfony\Component\OptionsResolver\OptionsResolver;
     
    class OffreType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('descrition', TextType::class,['attr'=>['placeholder'=>'Description de l\'offre'] ] )
    						->add('typeProfil', TextType::class, ['attr'=>['placeholder'=>'Type de profil souhaité'] ])
    						->add('experiences', TextType::class, ['attr'=>['Expérience'] ])
    						->add('diplome', TextType::class, ['attr'=>['Diplome'] ])
    						->add('ville', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Ville',
    						'choice_label'=>'nomVille',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('contrat', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Contrat',
    						'choice_label'=>'typeContrat',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('email', TextType::class, ['attr'=>['Email'] ])
    						->add('entreprise', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Entreprise',
    						'choice_label'=>'nomEntreprise',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('fichier', FileType::class)
    						->add('save', SubmitType::class, array('label' => 'Deposer une Offre'))
            ;
        }
    public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => Offre::class,
            ));
        }
     
    }
    et OffreForm.php
    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
     
    <?php
    // src/AppBundle/Form/TaskType.php
    namespace AppBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    //use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use AppBundle\Entity\Ville;
    use AppBundle\Entity\Offre;
    use AppBundle\Entity\Contrat;
    use AppBundle\Entity\Entreprise;
    use Symfony\Component\Form\Extension\Core\Type\FileType;
    use Symfony\Component\OptionsResolver\OptionsResolver;
     
    class OffreForm extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('descrition', TextType::class,['attr'=>['placeholder'=>'Description de l\'offre'] ] )
    						->add('typeProfil', TextType::class, ['attr'=>['placeholder'=>'Type de profil souhaité'] ])
    						->add('experiences', TextType::class, ['attr'=>['Expérience'] ])
    						->add('diplome', TextType::class, ['attr'=>['Diplome'] ])
    						->add('ville', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Ville',
    						'choice_label'=>'nomVille',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('contrat', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Contrat',
    						'choice_label'=>'typeContrat',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('email', TextType::class, ['attr'=>['Email'] ])
    						->add('entreprise', EntityType::class, array(
    						'class'=>'AppBundle\Entity\Entreprise',
    						'choice_label'=>'nomEntreprise',
    						'expanded'=>false,
    						'multiple'=>false))
    						->add('fichier', FileType::class)
    						->add('save', SubmitType::class, array('label' => 'Deposer une Offre'))
            ;
        }
    public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => Offre::class,
            ));
        }
     
    }
    quelqu'un pourra me guider s'il vous plait

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,

    Il faut utiliser les voters https://symfony.com/doc/current/security/voters.html sinon tu as des bundles https://symfony.com/doc/current/bund...tallation.html et fosuserbundle à voir ce qui correspond à ton besoin.

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

Discussions similaires

  1. Conception d'une base de donnée pour une banque
    Par simo1050 dans le forum Modélisation
    Réponses: 3
    Dernier message: 07/11/2007, 16h34
  2. Quelle Base de données pour une application en Java
    Par Feysal dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 01/06/2007, 21h05
  3. Réponses: 5
    Dernier message: 09/02/2007, 09h09
  4. Réponses: 2
    Dernier message: 23/11/2006, 10h37
  5. Plusieurs devices de données pour une seule base
    Par The Wretched dans le forum Sybase
    Réponses: 4
    Dernier message: 12/10/2006, 09h27

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