Углеродный цикл Laravel4 через неделю

Я пытаюсь прокрутить текущую неделю с углеродом и отображать каждый день в представлении.

$current_mon и $current_sun — это раскрывающийся список для выбора текущей недели с понедельника по воскресенье. Я понятия не имею, как провести остаток недели (со вторника по субботу), так как

    $tues = Carbon::now()->startOfWeek()->addDay(); 

это плохая идея!

Мой контроллер:

$now = Carbon::now();
    $current_mon = Carbon::now()->startOfWeek();        
    $current_sun = Carbon::now()->endOfWeek()->format('d-M');
    $tues = Carbon::now()->startOfWeek()->addDay(); 
    return View::make('backend/menubuilder/edit')->with('id',$id)->withCurrent_mon($current_mon)->withCurrent_sun($current_sun)->withTues($tues);

Пожалуйста посоветуй


person Steve Brown    schedule 20.04.2016    source источник


Ответы (2)


Используйте DateInterval и DatePeriod.

Контроллер:

$startDate = \Carbon::now()->startOfWeek();        
$endDate = \Carbon::now()->endOfWeek();
//Init interval
$dateInterval = \DateInterval::createFromDateString('1 day');
//Init Date Period from start date to end date
//1 day is added to end date since date period ends before end date. See first comment: http://php.net/manual/en/class.dateperiod.php
$datePeriod = new \DatePeriod($startDate, $interval, $endDate->modify('+1 day'));

return View::make('backend/menubuilder/edit',[$datePeriod]);

Просмотр:

@foreach($datePeriod as $datePeriodRow)
    {!! DateTime Object: See: http://php.net/manual/en/class.datetime.php !!}
    {{$datePeriodRow->format('d-M')}}
@endforeach
person Mysteryos    schedule 20.04.2016
comment
Спасибо за ваш код. Прямо сейчас я получаю 8 дней, на мой взгляд, так как 1 день также добавлен к $endDate. Есть идеи, как это исправить? - person Steve Brown; 20.04.2016
comment
В строке $datePeriod... переключитесь с $endDate->modify('+1 day') to $endDate`. - person Mysteryos; 21.04.2016

Хорошо, благодаря таинственному ответу, я получил его:

Контроллер

$startDate = Carbon::now()->startOfWeek();
    $endDate = Carbon::now()->endOfWeek();
    //Init interval
    $dateInterval = \DateInterval::createFromDateString('1 day');
    //Init Date Period from start date to end date
    //1 day is added to end date since date period ends before end date. See first comment: http://php.net/manual/en/class.dateperiod.php
    $dateperiod = new \DatePeriod($startDate, $dateInterval, $endDate);

    return View::make('backend/menubuilder/edit')->with('id',$id)->withDateperiod($dateperiod);

это отображает всю текущую неделю с понедельника по воскресенье Еще раз спасибо

person Steve Brown    schedule 20.04.2016
comment
Совет: передайте свои данные непосредственно в функцию View::make(). Использование ->with() станет утомительным, если вам нужно передать более 10 переменных. - person Mysteryos; 21.04.2016