Переменная во всем контроллере и просмотр полного календаря laravel 5.6 - PullRequest
0 голосов
/ 16 мая 2018

Я использую fullcalendar на своем веб-сайте в laravel 5.6, и он работает :), но когда я меняю представление, у меня возникает эта проблема:

Undefined variable: calendar_details

На мой взгляд layout.app у меня есть это:

{!! $calendar_details->script() !!}

Могу ли я определить эту переменную во всех контроллерах и во избежание проблем?

Это мой EventsController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use App\Http\Controllers\Controller;
use Auth;
use Validator;
use App\Events;

use Calendar;

class EventsController extends Controller
{
    public function index(){
        $events = Events::get();
        $event_list = [];
        foreach ($events as $key => $event){
            $event_list[] = Calendar::event(
                $event->event_name,
                true,
                new \DateTime($event->start_date),
                new \DateTime($event->end_date)
            );
        }
        $calendar_details = Calendar::addEvents($event_list);

        return view('events', compact('calendar_details'));
    }

    public function addEvent(Request $request){
        $validator = Validator::make($request->all(), [
            'event_name' => 'required',
            'start_date' => 'required',
            'end_date' => 'required',
        ]);

        if ($validator->fails()){
            \Session::flash('warning', 'Veuillez entrer des informations valide');
            return Redirect::to('/events')->withInput()->withErrors('warning');
        }

        $event = new Events;
        $event->event_name = $request['event_name'];
        $event->start_date = $request['start_date'];
        $event->end_date = $request['end_date'];
        $event->save();

        \Session::flash('success', 'Evènement ajouté avec succès');
        return Redirect::to('/events');

    }

}

и это мой Events.php:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Events extends Model
{
    protected $fillable = [
        'event_name', 'start_date', 'end_date'
    ];
}

1 Ответ

0 голосов
/ 16 мая 2018

Откройте вас app / Providers / AppServiceProvider и в методе boot () добавьте это:

use Illuminate\Support\Facades\View;
use App\Events;
use Calendar;
...
View::composer('layout', function ($view) {
    $events = Events::get();
    $event_list = [];
    foreach ($events as $key => $event){
        $event_list[] = Calendar::event(
            $event->event_name,
            true,
            new \DateTime($event->start_date),
            new \DateTime($event->end_date)
        );
    }

    $view->with('calendar_details', Calendar::addEvents($event_list));
});

Обратите внимание, что класс импорта должен быть в верхней части вашего файла. Этот код выполняет каждый раз, когда компиляция представления layout добавляет к нему calendar_details.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...