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
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 <?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(), )); } }
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(), )); } }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/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, )); } }
quelqu'un pourra me guider s'il vous plait
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, )); } }
Partager