Bonjour,
J'ai réussi a installer plusieurs fois le bundle fullcalendar de tattali mais aujourd'hui (depuis deux semaines en fait) j'ai créé un nouveau projet symfony 4.3.4 et je n'arrive pas a utiliser le bundle.
Une erreur s'affiche @paramconverter.
Je vous joins la capture d'écran.
J'ai pourtant bien suivi la documentation sur le github.
Je me permets aussi de vous poster le code de mon listener, de la vue, du controller et u service .yml.
***********************************
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 <?php namespace App\EventListener; use CalendarBundle\Entity\Event; use CalendarBundle\Event\CalendarEvent; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use App\Repository\EvenementRepository; class CalendarListener { private $evenementRepository; private $router; public function __construct(EvenementRepository $evenementRepository, UrlGeneratorInterface $router) { $this->$evenementRepository = $evenementRepository; $this->router = $router; } public function load(CalendarEvent $calendar) { $start = $calendar->getStart(); $end = $calendar->getEnd(); $filters = $calendar->getFilters(); // You may want to make a custom query to fill the calendar $calendar->addEvent(new Event( 'Event 1', new \DateTime('Tuesday this week'), new \DateTime('Wednesdays this week') )); // If the end date is null or not defined, it creates a all day event $calendar->addEvent(new Event( 'All day event', new \DateTime('Friday this week') )); } }
*****************************************
Code twig : 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 {%extends 'base.html.twig'%} {%block body%} {% include '@Calendar/calendar.html.twig' %} {%endblock%} {% block stylesheets %} <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fullcalendar/core@4.1.0/main.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fullcalendar/daygrid@4.1.0/main.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fullcalendar/timegrid@4.1.0/main.min.css"> {% endblock %} {% block javascripts %} <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/core@4.1.0/main.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/interaction@4.1.0/main.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/daygrid@4.1.0/main.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/timegrid@4.1.0/main.min.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', () => { var calendarEl = document.getElementById('calendar-holder'); var calendar = new FullCalendar.Calendar(calendarEl, { defaultView: 'dayGridMonth', editable: true, eventSources: [ { url: "{{ path('fc_load_events') }}", method: "POST", extraParams: { filters: JSON.stringify({}) }, failure: () => { // alert("There was an error while fetching FullCalendar!"); }, }, ], header: { left: 'prev,next today', center: 'title', right: 'dayGridMonth,timeGridWeek,timeGridDay', }, plugins: [ 'interaction', 'dayGrid', 'timeGrid' ], // https://fullcalendar.io/docs/plugin-index timeZone: 'UTC', }); calendar.render(); }); </script> {% endblock %}
****************************************
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 <?php namespace App\Controller; use App\Entity\Evenement; use App\Form\EvenementType; use App\Repository\EvenementRepository; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use CalendarBundle\Event\CalendarEvent; /** * @Route("/evenement") */ class EvenementController extends AbstractController { /** * @Route("/", name="evenement_index", methods={"GET"}) */ public function index(EvenementRepository $evenementRepository): Response { return $this->render('evenement/index.html.twig', [ 'evenements' => $evenementRepository->findAll(), ]); } /** * @Route("/new", name="evenement_new", methods={"GET","POST"}) */ public function new(Request $request): Response { $evenement = new Evenement(); $form = $this->createForm(EvenementType::class, $evenement); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($evenement); $entityManager->flush(); return $this->redirectToRoute('evenement_index'); } return $this->render('evenement/new.html.twig', [ 'evenement' => $evenement, 'form' => $form->createView(), ]); } /** * @Route("/{id}", name="evenement_show", methods={"GET"}) */ public function show(Evenement $evenement): Response { return $this->render('evenement/show.html.twig', [ 'evenement' => $evenement, ]); } /** * @Route("/{id}/edit", name="evenement_edit", methods={"GET","POST"}) */ public function edit(Request $request, Evenement $evenement): Response { $form = $this->createForm(EvenementType::class, $evenement); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->getDoctrine()->getManager()->flush(); return $this->redirectToRoute('evenement_index'); } return $this->render('evenement/edit.html.twig', [ 'evenement' => $evenement, 'form' => $form->createView(), ]); } /** * @Route("/{id}", name="evenement_delete", methods={"DELETE"}) */ public function delete(Request $request, Evenement $evenement): Response { if ($this->isCsrfTokenValid('delete'.$evenement->getId(), $request->request->get('_token'))) { $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($evenement); $entityManager->flush(); } return $this->redirectToRoute('evenement_index'); } /** * @Route("/calendrier", name="calendrier") */ public function afficher() { return $this->render('calendrier/calendrier.html.twig'); } }
*********************************************
Code yaml : 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 # This file is the entry point to configure your own services. # Files in the packages/ subdirectory configure your dependencies. # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration parameters: services: # default configuration for services in *this* file _defaults: autowire: true # Automatically injects dependencies in your services. autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/*' exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class App\Controller\: resource: '../src/Controller' tags: ['controller.service_arguments'] App\EventListener\CalendarListener: tags: - { name: 'kernel.event_listener', event: 'calendar.set_data', method: load } # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones
J'ai une autre question qui sort un peu du sujet. Savez vous comment désinstaller completement un bundle de symfony 4 ?
Merci de votre aide la communauté ! et pour ceux qui habitent dans le pays basque passez vers bayonne on pourra boire une petite bière a la gloire de Symfony![]()
Partager