所有控制器中的变量和查看全日历 laravel 5.6
Variable in all controller and view fullcalendar laravel 5.6
我在 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'
];
}
打开你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));
});
请注意,class 导入应该位于文件的顶部。这段代码所做的是每次编译 layout 视图时,它都会添加 calendar_details.
我在 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'
];
}
打开你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));
});
请注意,class 导入应该位于文件的顶部。这段代码所做的是每次编译 layout 视图时,它都会添加 calendar_details.