Example #1
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle(Request $request, Closure $next)
 {
     $modelIndex = Application::context(Application::CXT_API) ? 3 : 2;
     $idIndex = Application::context(Application::CXT_API) ? $modelIndex + 1 : $modelIndex + 2;
     // Check for the model slug. Throw 404 if not found.
     $modelSegment = $request->segment($modelIndex);
     $idSegment = $request->segment($idIndex);
     $blueprint = ModelBlueprint::slug($modelSegment);
     if (!$blueprint) {
         $message = "Class for '{$modelSegment}' does not exist";
         return Application::context(Application::CXT_API) ? RESTResponse::failed($message, 404) : response($message, 404);
     }
     $class = $blueprint->getClass();
     // Check if the model ID was given.
     if ($idSegment) {
         $model = $class::find($idSegment);
         if (!$model) {
             $message = "Model '{$modelSegment}/{$idSegment}' does not exist";
             return Application::context(Application::CXT_API) ? RESTResponse::failed($message, 404) : response($message, 404);
         }
         $request->Model = $model;
         return $next($request);
     }
     // Otherwise, return the static model class.
     $request->Model = new $class();
     return $next($request);
 }
 /**
  * Set up some early environment variables.
  * @param Request $request
  */
 public function boot_environment(Request $request)
 {
     $request->context = Application::context();
 }