Bonjour,

j'aurai besoin de votre aide sauriez vous comment organiser le code de façon à faire un rendu twig propre (à partir de lundi). J'aurai besoin d'un code flexible et étant débutant en php, je ne connais pas toutes les astuces. Les jours de fermeture par exemple (dans mon cas c'est le mercredi) peuvent être changées ainsi que le dimanche (ouverture seulement le midi) peut varier et ouvrir le midi et le soir. Il me faudrait des idées pour un code flexible pour ne pas toucher au code si jamais on rentre des horaires differents dans la base de données (ma base contient les jours de 0(dimanche) à 6(lundi) proprièté days, OpenTime heure d'ouverture(12:00) CloseTime heure de fermeture(14:00) et OpenTimeofDay(si c'est le midi ou le soir) contient midday ou evening. Si vous avez des idées, j'ai déjà perdu beaucoup de temps sur cette histoire et je n'ai pour l'instant pas trouvé beaucoup de solutions. Il faut afficher le résultat dans le twig à partir de Lundi bien sûr.

public function getOpenHoursforWeek()
    {
        $sunday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 0, 'timeofday' => 'midday']);
        $sunday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 0, 'timeofday' => 'evening']);
        $monday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 1, 'timeofday' => 'midday']);
        $monday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 1, 'timeofday' => 'evening']);
        $tuesday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 2, 'timeofday' => 'midday']);
        $tuesday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 2, 'timeofday' => 'evening']);
        $wednesday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 3, 'timeofday' => 'midday']);
        $wednesday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 3, 'timeofday' => 'evening']);
        $thursday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 4, 'timeofday' => 'midday']);
        $thursday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 4, 'timeofday' => 'evening']);
        $friday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 5, 'timeofday' => 'midday']);
        $friday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 5, 'timeofday' => 'evening']);
        $saturday_morning = $this->OpeningHoursRepo->findOneBy(['day' => 6, 'timeofday' => 'midday']);
        $saturday_evening = $this->OpeningHoursRepo->findOneBy(['day' => 6, 'timeofday' => 'evening']);

        $openingHours = OpeningHours::create([
            'monday' => [$monday_morning->getOpenTime()->format('H:i') .'-' . $monday_morning->getCloseTime()->format('H:i'),
                $monday_evening->getOpenTime()->format('H:i') . '-' . $monday_evening->getCloseTime()->format('H:i')],
            'tuesday' => [$tuesday_morning->getOpenTime()->format('H:i') .'-' . $tuesday_morning->getCloseTime()->format('H:i'),
                $tuesday_evening->getOpenTime()->format('H:i') . '-' . $tuesday_evening->getCloseTime()->format('H:i')],
            'thursday' => [$thursday_morning->getOpenTime()->format('H:i') .'-' . $thursday_morning->getCloseTime()->format('H:i'),
                $thursday_evening->getOpenTime()->format('H:i') . '-' . $thursday_evening->getCloseTime()->format('H:i')],
            'friday' => [$friday_morning->getOpenTime()->format('H:i') .'-' . $friday_morning->getCloseTime()->format('H:i'),
                $friday_evening->getOpenTime()->format('H:i') . '-' . $friday_evening->getCloseTime()->format('H:i')],
            'saturday' => [$saturday_morning->getOpenTime()->format('H:i') .'-' . $saturday_morning->getCloseTime()->format('H:i'),
                $saturday_evening->getOpenTime()->format('H:i') . '-' . $saturday_evening->getCloseTime()->format('H:i')],
            'sunday' => [$sunday_morning->getOpenTime()->format('H:i') .'-' . $sunday_morning->getCloseTime()->format('H:i')],
        ]);

        return $openingHours->forWeek(); //$openingHours->asStructuredData('H:iP', '+01:00'),
    }
}

1 réponse


Ptuner
Auteur

Opening Hours de Spatie me parait très peux flexible, je pense à une solution de clés valeurs alernative ou un simple tableau (en bouclant par indice dans le twig).