'Illegal offset type in isset or empty'遍历图像数组时 - Laravel 5



我有一个允许用户上传几张图片的表单。我使用Form::file('images[]')。当我尝试在控制器中遍历这些图像时我得到了错误

Illegal offset type in isset or empty 

这是我的控制器

public function up(Request $request) {
        $user = $request->user();
        $category=$request->get('category');
       if($category == 'portfolio'){
            $v = Validator::make($request->all(), [
             //code
            if ($v->fails()) {
                return Redirect::back()->withErrors($v)->withInput();
            }
            $portfolio_data= Input::except('first_name','last_name','country','address','zip','state','city','image');  
            $user_data = Input::only('first_name','last_name','country','address','zip','state','city','image');
        if ($user->user_portfolio == null){
            $user_portfolio = new UserPortfolio();
            $user_portfolio->fill($portfolio_data);
            $user_portfolio->user_id = $user->id;
            $user_portfolio->save();
        } else{
            $user->user_portfolio->fill($portfolio_data);
            $user->user_portfolio->save();
        }
    }
 **THIS IS WHERE I ITERATE THROUGH THE IMAGES**
$images = Input::only('images');
    if(Input::hasFile($images)){
        foreach($images as $image){
        var_dump($image);exit;
    $v = Validator::make($request->all(), [
        'images' => 'mimes:jpeg,png,jpg,application/pdf',
        ]);
    if ($v->fails()) {
        return Redirect::back()->withErrors($v)->withInput();
    }
        $file = $request->file('image');
        $ext = $file->getClientOriginalExtension();
        $id = $user->id;
        $url = 'https://s3-us-west-2.amazonaws.com/makers-marketing-dev/' . $id . '/profile/';
        config('constants.url');
        if ($category =='profile'){
            $media = ($user->media->where('category','profile')->first());
            if($media == null){
                $media = Media::create();
            }
        }elseif ($category == 'portfolio') {
            $media = Media::create();
        }
        $media->category = $category;
        $media->user_id = $user->id;
        $media->key = strtotime('now') . '.' . $ext;
        $media->path = $url . $media->key;
        $media->save();
        $key = $media->key;
        $s3 = AWS::createClient('s3');
        $result = $s3->putObject(array(
            'Bucket' => self::$_BUCKET_NAME,
            'Key' => $user->id . '/profile/' . $key,
            'SourceFile' => $file->getRealPath(),
            'Metadata' => array(
            'Owner' => $user->first_name .' ' . $user->last_name
            )
        ));
    }
}
    return Redirect::back();
}

part of my view:

 {!! Form::open(array('action'=>'FileController@up', 'files'=>true))!!}
<div class='form-group'>
  <div class='row'>
    <div class='col-md-12'>
      <div class='btn btn-info btn-md'>
        {!!Form::file('images[]')!!}
      </div>
    </div>
  </div>
</div>
<div class='form-group'>
  <div class='row'>
    <div class='col-md-12'>
      <div class='btn btn-info btn-md'>
        {!!Form::file('images[]')!!}
      </div>
    </div>
  </div>
</div>
<div class='form-group'>
  <div class='row'>
    <div class='col-md-12'>
      <div class='btn btn-info btn-md'>
        {!!Form::file('images[]')!!}
      </div>
    </div>
  </div>
</div>
{!! Form::close() !!}

完整的错误信息:

ErrorException in Arr.php line 234:
Illegal offset type in isset or empty
in Arr.php line 234
at HandleExceptions->handleError('2', 'Illegal offset type in isset or empty', '/Users/Jack/projects/makersBrand/laravel/vendor/laravel/framework/src/Illuminate/Support/Arr.php', '234', array('array' => array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile))), 'key' => array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile))), 'default' => null)) in Arr.php line 234
at Arr::get(array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile))), array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile))), null) in Request.php line 375
at Request->file(array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile)))) in Request.php line 386
at Request->hasFile(array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile)))) in Facade.php line 210
at Facade::__callStatic('hasFile', array(array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile))))) in FileController.php line 82
at Input::hasFile(array('images' => array(object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile), object(UploadedFile)))) in FileController.php line 82
at FileController->up(object(Request))
at call_user_func_array(array(object(FileController), 'up'), array(object(Request))) in Controller.php line 256
at Controller->callAction('up', array(object(Request))) in ControllerDispatcher.php line 164
at ControllerDispatcher->call(object(FileController), object(Route), 'up') in ControllerDispatcher.php line 112
at ControllerDispatcher->IlluminateRouting{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->IlluminatePipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(FileController), object(Route), object(Request), 'up') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'AppHttpControllersFileController', 'up') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->IlluminateRouting{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->IlluminatePipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->IlluminateFoundationHttp{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->IlluminatePipeline{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->IlluminatePipeline{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54

它从来没有使var_dump($images),我只是抛出这个错误。

我就是这么做的。而不是使用条件:

if(Input::hasFile($images)){
   //code
}
我使用

:

if(!empty($images)){
   //code
}

最新更新