実現したいこと
画像を追加してDB上に画像を表示させたい。
発生している問題・分からないこと
入力フォームから画像を選択して登録ボタンを押す。
DB上で確認するとNULLになっていて、エラーなどは発生していない。
エラーメッセージ
error
1エラーメッセージは出ていない。
該当のソースコード
php(View)
1<form action="{{ route('curriculum_store') }}" method="POST" enctype="multipart/form-data"> 2 @csrf 3 <div class="form-group"> 4 <label for="thumbnail_image">サムネイル画像:</label> 5 <input type="file" name="thumbnail_image" id="thumbnail_image" accept="image/*"> 6 </div> 7 <br> 8 <label for="grade_id">学年:</label> 9 <select name="grade_id" id="grade_id"> 10 @foreach ($grades as $grade) 11 <option value="{{ $grade->id }}" {{ request('grade_id') == $grade->id ? 'selected' : '' }}> 12 {{ $grade->name }} 13 </option> 14 @endforeach 15 </select> 16 <br> 17 <!-- aaaaaaaaaaaaaaaaaaa --> 18 <label for="title">授業名:</label> 19 <input type="text" id="title" name="title"> 20 <label for="video_url">動画URL:</label> 21 <input type="text" id="video_url" name="video_url"> 22 <label for="description">授業概要:</label> 23 <textarea id="description" name="description" rows="4" cols="50"></textarea> 24 <label for="alway_delivery_flg">常時公開:</label> 25 <input type="checkbox" id="alway_delivery_flg" name="alway_delivery_flg" value="1"> 26 <input type="submit" value="登録"> 27 </form>
php(controller)
1public function CurriculumStore(CurriculumsRequest $request) 2 { 3 $grade = Curriculum::where('grade_id' , $request->input('grade_id'))->first(); 4 $model = new Curriculum(); 5 $model->storeCurriculum($grade , $request); 6 7 return redirect()->route('curriculum_list'); 8 }
php(Model)
1public function storeCurriculum($grade , $request) 2 { 3 //授業データを保存 4 $curriculums = new Curriculum(); 5 $curriculums->title = $request->input('title'); 6 7 //ここにサムネイル画像を入れる 8 // 商品画像を保存 9 if ($request->hasFile('thumbnail_image')) { 10 return back()->with('error', 'ファイルがアップロードされていません'); 11 $imagePath = $request->file('thumbnail_image')->store('images', 'public'); 12 $curriculums->thumbnail = $imagePath; 13 } 14 15 $curriculums->description = $request->input('description'); 16 $curriculums->video_url = $request->input('video_url'); 17 $curriculums->alway_delivery_flg = $request->boolean('alway_delivery_flg'); 18 $curriculums->grade_id = $request->input('grade_id'); 19 20 $curriculums->save(); 21 return $curriculums; 22 }
php(Request)
1public function rules() 2 { 3 return [ 4 'title' =>'required|max:255', 5 'description'=>'max:2000', 6 'thumbnail' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', 7 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', 8 ]; 9 } 10 public function messages() 11 { 12 return [ 13 'title.required' => '授業名は必須項目です。', 14 'title.max' => '授業名は255文字以内で入力してください。', 15 'description.max' => '授業概要は2000文字以内で入力してください。', 16 'thumbnail.image' => '商品画像は画像ファイルを選択してください。', 17 'thumbnail.mimes' => '商品画像はjpeg、png、jpg、gif形式の画像ファイルを選択してください。', 18 'thumbnail.max' => '商品画像のサイズは2MB以下にしてください。', 19 ]; 20 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
チャットGPTで調べた。
保存先は正しいか
送信ができているかの確認のコードを教えてもらい試したが、エラー
補足
イメージ画像がある位置
public\img\ash-edmonds-fsI-_MRsic0-unsplash.jpg
回答2件
あなたの回答
tips
プレビュー