Gabo Ruiz
Gabo Ruiz

Reputation: 556

Trouble with undefined variable in laravel

I have my APIrest in Laravel 5. I'm trying to upload files. This is my controller :

 public function makeFile(Request $request)
 {
     if(isset($request->files) && is_array($request->files)) {
         $fileArray=array();
         foreach($request->files as $key=>$fileEntity) {
             $file= new File();
             $file->file=$fileEntity['file'];
             $file->shipment_id=$fileEntity['shipment_id'];
             $file->user_id=$fileEntity['user_id'];
             $file->date=date('Y,m,d,G,i,s');
             $file->fileName=$fileEntity['fileName'];
             $file->fileType=$fileEntity['fileType'];
             $file->status=$fileEntity['status'];
             $file->save();

             array_push($fileArray, $file);
         }
         // return response()->json($fileArray);
     }
 (line 132 the one of the error)     return response()->json($fileArray);
 }

In the frontend (angularjs) when i upload a file it throws this error

ErrorException in ShipmentController.php line 132: Undefined variable: fileArray

Why this is happening?

Upvotes: 0

Views: 1032

Answers (2)

Mirek Kowieski
Mirek Kowieski

Reputation: 94

You declared $fileArray variable inside if statement it works like local variable for this statement.

Solution:

public function makeFile(Request $request)
{
    $fileArray = [];
    if (isset($request->files) && is_array($request->files)) {
        foreach ($request->files as $key => $fileEntity) {
            $file= new File();
            $file->file=$fileEntity['file'];
            $file->shipment_id=$fileEntity['shipment_id'];
            $file->user_id=$fileEntity['user_id'];
            $file->date=date('Y,m,d,G,i,s');
            $file->fileName=$fileEntity['fileName'];
            $file->fileType=$fileEntity['fileType'];
            $file->status=$fileEntity['status'];
            $file->save();

            $fileArray[] = $file;
        }
    }
    return response()->json($fileArray);
}

Upvotes: 1

Dan
Dan

Reputation: 5358

You have to declare the $fileArray=array(); outside the first if. If the first if doesn't evaluate true, the variable isn't set.

Upvotes: 4

Related Questions