widget_type_handler = $widgetType->handler; $widget->language = LaravelLocalization::getCurrentLocale(); $widget->user_id = \Auth::user()->id; $widget->name = $data->name; // save description if available if (isset($data->description)) { $widget->description = $data->description; } $widget = call_user_func([$widgetType->handler, 'save'], $widget, $data); // save into database $widget->save(); // fire event with newly created widget Event::fire(new \App\Events\CreateNewWidget($widget)); return $widget; } }