2017-08-13 72 views
-1

我試圖更新我用下面的控制器USERPROFILE但問題是,如果我只更新資料圖片則顯示上述error..But如果我更新每次成功更新值。我如何更新USERPROFILE不更新每個值:(1/1)ErrorException未定義抵消:1

public function updateUser(Request $request) 
{ 
    $this->validate($request, [ 
     'profile_picture' => 'dimensions:width=400,height=400', 
     'cover_picture' => 'dimensions:width=800,height=400', 
     'avatar' => 'dimensions:width=80,height=80',    
     ]); 

if (\Auth::check()) 
{ 
    $user= User::find(\Auth::id()); 
} 

$files= []; 
if($request->file('profile_picture')) $files[] = $request->file('profile_picture'); 
if($request->file('cover_picture')) $files[] = $request->file('cover_picture'); 
if($request->file('avatar')) $files[] = $request->file('avatar'); 

foreach($files as $file) 
    { 
     if(!empty($file)) 
     { 
      $filename = time().str_random(20). '.' . $file->getClientOriginalExtension(); 
      $file->move('users/',$filename);  
      $filenames[]=$filename; 
     } 
    } 

$user->profile_picture = $filenames[0]; 
$user->cover_picture = $filenames[1]; 
$user->avatar = $filenames[2]; 

$user->save(); 
return redirect::back()->with('Warning',"Profile Updated Successfully"); 

} 
+0

請包含'$ filenames'的var_dump。我的假設是'$ filenames [1]'不存在。 – Scuzzy

+0

'$文件名[1],因爲我剛剛上傳'profile_picture'不是'cover_picture' ..suppose我不想上傳'不存在..。然後我得到以下錯誤。 – User57

+0

是的,看到我的回答,我相信我已經將您的代碼重新構建爲更簡潔的方法。 – Scuzzy

回答

1

我不認爲使用這樣的位置排列,正如你已經發現是明智的,如果有人只是想更新自己的頭像。我覺得你的$files[]任務是多餘的,你可以直接進入你的處理代碼。

基本上你現在的實現意味着$files可以是可變長度,你怎麼知道哪些是0,1或2等?

用我的方法,代碼現在循環遍歷每種類型的圖片,並通過相同的匹配類型屬性直接將其分配給$user->$type

foreach(array('profile_picture', 'cover_picture', 'avatar') as $type) 
{ 
    if($request->file($type)) 
    { 
     $filename = time() . str_random(20) . '.' . $request->file($type)->getClientOriginalExtension(); 
     $request->file($type)->move('users/', $filename);  
     $user->$type = $filename; 
    } 
} 

如果你發現你需要映射不同的$源到$類型的變量,你可以這樣做有一個額外的數組索引...

foreach(array(
    'profile_picture' => 'profile_picture', 
    'cover_picture' => 'cover_picture', 
    'avatar' => 'avatar' 
) as $source => $type) 
{ 
    if($request->file($source)) 
    { 
     $filename = time() . str_random(20) . '.' . $request->file($source)->getClientOriginalExtension(); 
     $request->file($source)->move('users/', $filename);  
     $user->$type = $filename; 
    } 
} 
-2

我終於想出了與解決方案隊友。

您可以嘗試包含$ filename的var_dump。我想,$ filenames [1]根本不存在。