Je travaille avec Laravel 4 sur un outil pour publier/programmer des menus de restaurant sur Facebook. Pour cela, j'ai besoin d'un sélecteur de date pour la semaine en cours, commençant toujours le lundi et se terminant toujours le dimanche.
filaire pour le menu du restaurant
J'ai joué avec les exemples http://carbon.nesbot.com/docs/#api-getters mais sans succès.
Une idée?
C'est assez simple avec Carbon Library. Voici l'exemple de code:
$now = Carbon::now();
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');
Même vous avez la possibilité de changer le jour de début et de fin de la semaine. C'est comme ça,
$start = $now->startOfWeek(Carbon::TUESDAY);
$end = $now->endOfWeek(Carbon::MONDAY);
La meilleure façon est d'utiliser le plugin jquery
Dans votre view.blade.php faire un champ de saisie
<input type="text" id="in">
Dans votre fichier de script, sélectionnez cette entrée et définissez la plage de dates
<script>
$("#in").datepicker({
minDate: new Date("{{Carbon\Carbon::now()->startOfWeek()->format('Y/m/d')}}"),
maxDate: new Date("{{Carbon\Carbon::now()->endOfWeek()->format('Y/m/d')}}")
});
</script>
Cela devrait ressembler à ceci
Cela vous donne le début de la semaine (lundi) jusqu'à la fin de la semaine (dimanche).
Aucune idée s'il s'agit d'un paramètre sur le serveur. (Certaines personnes ont mis la première semaine le dimanche)
private $start;
private $end;
public function setWeekPeriod($weeknumber)
{
$week_start = (new DateTime())->setISODate(date("Y"),$weeknumber)->format("Y-m-d H:i:s");
$this->start = Carbon::createFromFormat("Y-m-d H:i:s", $week_start);
$this->start->hour(0)->minute(0)->second(0);
$this->end = $this->start->copy()->endOfWeek();
}