filled('action')){ return null; } $request->validate([ 'action' => 'string', 'params' => 'nullable|json', ]); $data = $repository->find($id); if(!method_exists($data, 'callAction')){ throw new \Exception('The class ' . get_class($data) . ' must use App\Traits\ActionCallable trait', 1); } $data->callAction($request->action, $request->params); event(new ActionCalled($data, $request->action, json_decode($request->params))); return $data; } }