お疲れ様です。
質問お願いします。
現在、Laravel8
で日記アプリを作っていて、画像投稿機能を実装しているところです。
PostController
でstore
アクションまでは実装し、データを挿入してみたところ、データベースのカラムにはpublic/image/3A2292DF-0BC9-4666-817D-C821D755A22F.jpeg
のようにデータは保存されている状態です。
ですが、index.blade.php
で表示させてみても画像のところだけ表示されません。
おそらく<img src="{{ Storage::url($post->picture) }}" class="card-img-top" alt="...">
が間違っているのというのは分かるのですが、ググっても公式ドキュメントをみても解決しないのでご教授お願いします。
*下記は参考にしたサイトになります
「公式リファレンス」Laravel 8.x ファイルストレージ
画像アップロード機能を投稿フォームにつける【初心者のLaravel入門講座】
indexbladephp
1 2<div class="row row-cols-1 row-cols-xl-3 g-4"> 3 @foreach ($posts as $post) 4 <div class="col"> 5 <div class="card h-100"><img src="{{ Storage::url($post->picture) }}" class="card-img-top" alt="..."> 6 <div class="card-body"> 7 <h5 class="card-title">{{$post->title}}</h5> 8 <p class="card-text">{{$post->diary}}</p> 9 <a href="/posts/{{$post->id}}">詳細を表示</a> 10 <a href="/posts/{{$post->id}}/edit">編集する</a> 11 <form action="/posts/{{$post->id}}" method="post"> 12 {{ csrf_field() }} 13 <input type="hidden" name="_method" value="delete"> 14 <input type="submit" name="" value="削除する"> 15 </form> 16 {{-- <a href="/posts/{{$post->id}}">削除する</a> --}} 17 </div> 18 <div class="card-footer"> <small class="text-muted">Last updated 3 mins ago</small> </div> 19 </div> 20 </div> 21 @endforeach 22</div>
PostControllerphp
1 public function store(Request $request) 2 { 3 $post = new Post; 4 5 // $requestにformからのデータが格納されているので、以下のようにそれぞれ代入する 6 $inputs = request()->validate([ 7 'picture'=>'image', 8 'title'=>'required|max:255', 9 'diary'=>'required|max:255', 10 ]); 11 12 // 画像ファイルの保存場所指定 13 if(request('picture')) { 14 $filename = request()->file('picture')->getClientOriginalName(); 15 $inputs['picture'] = request('picture')->storeAs('public/image', $filename); 16 } 17 18 // 保存 19 $post->create($inputs); 20 // 保存後 一覧ページへリダイレクト 21 return redirect('/posts'); 22 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/02 04:31
2021/03/02 06:01 編集
2021/03/02 07:08
2021/03/02 13:26