2017-08-01 191 views
0

我在Laravel 5中有我的APIrest。 我试图上传文件。 这是我的控制器:laravel中未定义变量的问题

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); 
} 

在前端(angularjs)当我上传引发此错误

ErrorException在ShipmentController.php线132中的文件:未定义变量: fileArray

为什么会发生这种情况?

+0

你得到这个错误,因为'如果(isset($请求 - >文件)&& is_array($请求 - >文件))'的计算结果为false,这样你的变量从未被初始化。 –

回答

2

如果在之内声明了$ fileArray变量,如果语句它像这个语句的局部变量一样工作。

解决方案

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); 
} 
+0

我正在寻找更复杂的错误哈哈。谢谢 –

4

您必须在第一个if之外声明$fileArray=array();。如果第一个if未评估为真,则该变量未设置。