Bonjour,

Je débute en Symfony et je suis actuellement sur un projet : un site avec système de réservation de chambre.
J'ai mon site, avec mon formulaire de création de client + choix de la chambre, du mode de payement ,... Ci dessous :

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('client', ClientType::class)
        ->add('date', DateType::class)
        ->add('chambre', EntityType::class, array(
            'class'        => 'ClientBundle:Chambre',
            'choice_label' => 'nomchambre',

  ))
        ->add('modepayement', EntityType::class, array(
            'class'        => 'ClientBundle:modepayement',
            'choice_label' => 'libel',
        ))
        ->add('save',   SubmitType::class);
    }

Dans ce formulaire j'aimerais y intégrer un datepicker à la place du champs 'date'. Pour que le client puisse sélectionner sa date d'arriver ET sa date de départ.
Ensuite, j'aimerais récupérer les dates réservés et les afficher dans un calendrier sur l'interface administration ( cette étape ne me semble pas compliqué )
Et le point où j'aimerais être aidé :
Je souhaiterais que l'administrateur, avec un formulaire, puisse désigner des dates où il ne veut pas que le client puisse réserver. ( Que sur le datepicker du formulaire de réservation, les dates ne puissent pas être sélectionnées) ainsi que les dates qui ont été réservés précédemment par les clients.

Merci !

4 réponses


fa_dev
Auteur

Up ?

J'ai ajouté un datepicker avec ça :

$builder
        ->add('client', ClientType::class)
        ->add('dateDebut', DateType::class, array(
              'widget' => 'single_text',))
         ->add('dateFin', DateType::class, array(
              'widget' => 'single_text',))

Il me reste à savoir comment l'éditer ..

Quel datepicker utilises-tu ?
Les plus connus ont plein d'options que tu peux regarder dans leurs docs ;)

fa_dev
Auteur

J'ai réussi à installer un datepicker : celui de Bootstrap. Il marche correctement et j'ai réussi à obtenir ce que je voulais ( griser des cases au choix )
à l'aide de cette fonction :

  <script>
        $(document).ready(function(){

        $('.js-datepicker').datepicker({
            format: 'mm/dd/yyyy',
            todayHighlight: true,
            datesDisabled: ['11/06/2017', '11/21/2017']
        });
    });
</script>

J'aimerais votre aide pour :
A l'aide d'un formulaire, pouvoir ajouter des dates qui seront grisés ( et donc après l'envoi du formulaire, en gros récupérer les donnés et les mettre dans 'datesDisabled' dans la fonction ci dessus.)

J'aimerais être orienté de la façon dont je dois m'y prendre sous symfony.. Merci

J'ai l'impression que t'es un peu confus entre ton backend, c'est à dire Symfony, et ton front (JS).

Il faudrait récupérer les dates dans ta vue Twig (back), puis, en JS (front) configurer le datepicker pour griser ces dates.
Tu peux faire un truc dans le genre :

{# J'ajoute un attribut data-dates-disabled pour "transférer" les donner côté front. Dans mon exemple, il faut que la variable soit au format : "['11/06/2017', '11/21/2017']" #}
<input type="text" class="js-datepicker" data-dates-disabled="{{ dates }}">

{#  Je récupère les données côté front en JS et je les utilise pour configurer le datepicker #}
<script>
  $(document).ready(function(){
        var datesDisabled = $('.js-datepicker').attr('data-dates-disabled')
        $('.js-datepicker').datepicker({
            format: 'mm/dd/yyyy',
            todayHighlight: true,
            datesDisabled: datesDisabled
        });
    });
</script>