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

Laravel PHP Discussion :

Afficher events dans Fullcalendar


Sujet :

Laravel PHP

  1. #1
    Membre �clair� Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    D�cembre 2010
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 354
    Par d�faut Afficher events dans Fullcalendar
    Bonjour � tous,

    J'ai un soucis pour afficher correctement les �v�nements pris hors de Mysql dans un calendrier FullCalendar.
    Actuellement ils s'affichent comme ceci :
    Nom : Capture.PNG
Affichages : 428
Taille : 20,7 Ko

    Mais en r�alit� j'aimerais bien qu'ils soient en param�tre "background" selon la doc FullCalendar :
    Nom : Capture2.PNG
Affichages : 400
Taille : 21,3 Ko

    Voici le script d'int�gration du calendrier dans lequel je converti le r�sultat de la requ�te en JSON @json($start)
    Code HTML : 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
    <script>
     
          document.addEventListener('DOMContentLoaded', function() {
            var calendarEl = document.getElementById('fullCalendar');
            var calendar = new FullCalendar.Calendar(calendarEl, {
              initialView: 'dayGridMonth',
              height : 500,
              initialDate: '2022-08-10',
                      
                      events : @json($start),
                    
             /*
                      events: [
            
            {
              start:'2022-08-26',
              end: '2022-08-28',
              overlap: false,
              display: 'background'
            },
            {
              start: '2022-09-05',
              end: '2022-09-09',
              overlap: false,
              display: 'background'
            },
                   
          ]*/
              
            });
            calendar.render();
          });
     
        </script>

    et un extrait de mon controlleur :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $start = Booking::where('arrival','>=',date('Y-m-d'))
                				 ->where('departure','>=',date('Y-m-d'))
                				->get(['arrival as start','departure as end']);
     
    	//dd($start);
     
    	  return view('/sign-up',compact('start'));
    Le probl�me se situe au niveau de l'int�gration de display: 'background' car la conversion de la variable $start en JSON donne bien ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    events : [{"start":"2022-08-26","end":"2022-08-28"},{"start":"2022-09-05","end":"2022-09-09"}],
    Pourriez-vous svp m'aider � ce sujet ?

    Merci d'avance

  2. #2
    Membre �m�rite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    435
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 435
    Par d�faut
    Bonjour,

    Si je comprends bien, tu dois modifier ton tableau $start afin d'ajouter une propri�t� display sur chaque �l�ment event avant de le retourner � ta vue.
    Tu devrais pouvoir faire ca dans ton contr�leur avec une boucle ou via array_map :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // avec une boucle : 
    foreach($start as $key => $event) {
        $event->display = 'background';
        $start[$key] = $event;
    }
     
    // ou avec array_map : 
    array_map(function($event) {
        $event->display = 'background';
    }, $start);
     
    dd($start);

  3. #3
    Membre �clair� Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    D�cembre 2010
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 354
    Par d�faut
    Merci c'est bien comme cela

  4. #4
    Membre �clair� Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    D�cembre 2010
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 354
    Par d�faut
    Je prolonge un peu ma r�flexion sur l'affichage des �v�nements dans FullCalendar.

    Serait-il possible d'afficher plusieurs Events pour par exemple un calendrier de locations qui se d�finiraient comme ceci:
    - une requ�te du controlleur affiche les r�servations (start/end) en gris. (Donn�es extraites d'une table "bookings")
    - une seconde requ�te affiche les p�riodes de basse saison (start/end) avec un fond vert. (Donn�es extraites d'une table "seasons")
    - une troisi�me requ�te affiche les p�riodes de moyenne saison (start/end) avec un fond orange.
    - une quatri�me requ�te affiche les p�riodes de haute saison (start/end) avec un fond rouge.



    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
     
     
     $start = Booking::where('arrival','>=',date('Y-m-d'))
                				 ->where('departure','>=',date('Y-m-d'))
                				 ->where('house_id',$house_id->id)
                				->get(['arrival as start','departure as end']);
     
     
    			foreach($start as $key => $event) {
    			    $event->display = 'background';
    			    $event->color = '#999';
    			    $start[$key] = $event;
    			}
     
                           /*example pour une basse saison*/
    			$seasonLow= Season::select('low_start as start', 'low_end as end')->get();	
         		         foreach($seasonLow as $key => $event) {
    			    $event->display = 'background';
    			    $event->color = '#9ff991';
    			    $seasonLow[$key] = $event;
    			}
    Dans le controlleur je ne sais pas si c'est r�alisable de fusionner le r�sultat des requ�tes pour ne former qu'une seule qui pourra �tre lue par le calendrier.
    Le calendrier � besoin de minimum ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
              start:
              end:
              display:
              color :


    J'ai essay� comme ceci sans succ�s vu le foreach :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    $fusion = $start + $seasonLow ;
    Si vous avez une solution pour moi se serait cool

  5. #5
    Membre �m�rite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    435
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 435
    Par d�faut
    Essaye d'utiliser la fonction array_merge() au lieu de l'op�rateur + pour fusionner tes tableaux (conflit sur les cl�s num�riques avec l'op�rateur +).

  6. #6
    Membre �clair� Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    D�cembre 2010
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 354
    Par d�faut
    J'ai fais ceci :

    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
     
     $start = Booking::where('arrival','>=',date('Y-m-d'))
                				 ->where('departure','>=',date('Y-m-d'))
                				 ->where('house_id',$house_id->id)
                				->get(['arrival as start','departure as end']);
     
     
    			foreach($start as $key => $event) {
    			    $event->display = 'background';
    			    $event->color = '#999';
    			    $start[$key] = $event;
    			}
     
    			$seasonLow= Season::select('low_start as start', 'low_end as end')->get();	
         		foreach($seasonLow as $key => $event) {
    			    $event->display = 'background';
    			    $event->color = '#9ff991';
    			    $seasonLow[$key] = $event;
    			}
     
    			$fusion = array_merge($start, $seasonLow);
     
    	  return view('/sign-up',compact('fusion'));
    Mais il me retourne une erreur : array_merge(): Argument #1 must be of type array

  7. #7
    Membre �clair� Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    D�cembre 2010
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 354
    Par d�faut
    ok j'ai trouv�

    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
     $start = Booking::where('arrival','>=',date('Y-m-d'))
                				 ->where('departure','>=',date('Y-m-d'))
                				 ->where('house_id',$house_id->id)
                				->get(['arrival as start','departure as end'])->toArray();
                
    			
    			foreach($start as $key => $event) {
    			    $event['display'] = 'background';
    			    $event['color'] = '#999';
    			    $start[$key] = $event;
    			}
    			//dd($start);
    			
    			$seasonLow= Season::select('low_start as start', 'low_end as end')->get()->toArray();	
         		foreach($seasonLow as $key => $event) {
    			    $event['display'] = 'background';
    			    $event['color'] = '#9ff991';
    			    $seasonLow[$key] = $event;
    			}
    			
    			$fusion = array_merge($start, $seasonLow);

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 07/11/2005, 15h38
  2. Icone ne s'affichant pas dans la barre de titre
    Par Spartan03 dans le forum Windows
    R�ponses: 22
    Dernier message: 05/11/2005, 14h57
  3. [CSS][IE]background d'affiche pas dans div sur IE
    Par Thomzz dans le forum Mise en page CSS
    R�ponses: 7
    Dernier message: 21/09/2005, 23h32
  4. Noms des colonnes ne s'affichent pas dans un JTable
    Par Bourdet dans le forum Agents de placement/Fen�tres
    R�ponses: 5
    Dernier message: 07/07/2005, 15h26
  5. Une valeur ne s'affiche pas dans un champ texte
    Par KibitO dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 13/03/2005, 20h42

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