RegisterController.php内の以下のコードでUndefined index: img_name というエラーが出ます。(未定義の配列の要素を使用した時に出るエラー)
php
1 //$data['img_name']にデータが無い時 2 if($data['img_name'] == NULL){ 3 // no_img.pngを$imageFile代入 4 $imageFile = 'no_img.png'; 5 //$data['img_name']にデータがあれば$imageFileに代入 6 }else{ 7 $imageFile = $data['img_name']; 8 }
私の考えではimg_nameがNULL(空)の時は $data['img_name']に'no_img.png'を渡しているので未定義の配列の要素というエラーになってしまう事に理解ができません。。。。
上記if文で取得した$imageFileを最終的には以下のコードのように画像をリザイズして保存できるようにしたいです。
php
1 2 if($data['img_name'] == NULL){ 3 //$data['img_name']にデータが無い時 no_img.pngを$imageFile代入 4 $imageFile = 'no_img.png'; 5 //$data['img_name']にデータがあれば$imageFileに代入 6 }else{ 7 $imageFile = $data['img_name']; 8 } 9 10 //$imageFileからファイル名を取得(拡張子あり) 11 $filenameWithExt = $imageFile->getClientOriginalName(); 12 13 //拡張子を除いたファイル名を取得 14 $fileName = pathinfo($filenameWithExt, PATHINFO_FILENAME); 15 16 //拡張子を取得 17 $extension = $imageFile->getClientOriginalExtension(); 18 19 // ファイル名_時間_拡張子 として設定 20 $fileNameToStore = $fileName.'_'.time().'.'.$extension; 21 22 //画像ファイル取得 23 $fileData = file_get_contents($imageFile->getRealPath()); 24 25 //拡張子ごとに base64エンコード実施 26 if ($extension = 'jpg'){ 27 $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); 28 } 29 30 if ($extension = 'jpeg'){ 31 $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); 32 } 33 34 if ($extension = 'png'){ 35 $data_url = 'data:image/png;base64,'. base64_encode($fileData); 36 } 37 38 if ($extension = 'gif'){ 39 $data_url = 'data:image/gif;base64,'. base64_encode($fileData); 40 } 41 42 //画像アップロード(Imageクラス makeメソッドを使用) 43 $image = Image::make($data_url); 44 45 //画像を横400px, 縦400pxにリサイズし保存 46 $image->resize(400,400)->save(storage_path() . '/app/public/images/' . $fileNameToStore ); 47 48 //createメソッドでユーザー情報を作成 49 return User::create([ 50 'name' => $data['name'], 51 'email' => $data['email'], 52 'password' => Hash::make($data['password']), 53 'self_introduction' => $data['self_introduction'], 54 'sex' => $data['sex'], 55 'img_name' => $fileNameToStore, 56 ]);
どすればいいか、アドバイスお願いします。