2017-08-13 18 views
-1

私のuserprofileを次のコントローラで更新しようとしましたが、私が上記のエラーを示すプロフィール画像のみを更新すると問題があります。しかし、 。私はすべての値を更新せずに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

'$ filenames [1]'は存在しません。私は 'cover_picture'ではなく' profile_picture'をアップロードしたので、アップロードしたくありません。その後、私は次のエラーが発生しました。 – User57

+0

ええ、私の答えを見て、私は信じています私はあなたのコードをより簡潔なアプローチに再構築しました。 – Scuzzy

答えて

1

が、私はそれはあなたが発見したように、このような位置のアレイを使用して賢明だとは思わない、どのような誰かが唯一の自分のアバターを更新したい場合。私は$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

私は最終的に思いつきましたソリューションメイトと

$ファイル名のvar_dumpを含めることができます。 $ファイル名[1]はまったく存在しないと思います。

関連する問題