2016-04-20 6 views
0

Ich versuche, durch die aktuelle Woche mit Kohlenstoff und Anzeige jeden einzelnen Tag in der Ansicht zu durchlaufen.Laravel4 Carbon Schleife durch Woche

$ current_mon und $ current_sun ist ein Dropdown, um die aktuelle Woche von Montag bis Sonntag auszuwählen. Ich habe keine Ahnung, wie man den Rest der Woche (Di bis Sa) zu erhalten, wie

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

ist eine schlechte Idee!

Mein Controller ist:

$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); 

Bitte geben

Antwort

0

Nutzen Sie DateInterval und DatePeriod.

Controller:

$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]); 

Ausblick:

@foreach($datePeriod as $datePeriodRow) 
    {!! DateTime Object: See: http://php.net/manual/en/class.datetime.php !!} 
    {{$datePeriodRow->format('d-M')}} 
@endforeach 
+0

Danke für Ihren Code. Im Moment habe ich 8 Tage Zeit, da es auch einen Tag zu $ ​​endDate gibt. Irgendeine Idee, wie man das repariert? –

+0

In der Zeile '$ datePeriod' ... wechseln Sie von' $ endDate-> modifizieren ('+ 1 Tag') nach '$ endDate'. – Mysteryos

0

Ok dank Mysterious Antwort bekam ich es:

-Controller

$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); 

Dies zeigt die gesamte aktuelle Woche von Montag bis Sonntag Danke nochmal

+0

Tipp: Übergeben Sie Ihre Daten direkt in der 'View :: make()' -Funktion. Die Verwendung von '-> mit()' wird ermüdend, wenn Sie mehr als 10 Variablen haben. – Mysteryos