kazuya0412ka
@kazuya0412ka (和也 大塚)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravelで投稿の画像を表示したい

解決したいこと

ララベルでファイルを取得して、ビューに表示したい

例)
ララベルでツイッターアプリのようなものを作っています。
ビューでファイルを取得して、表示したいです。
ファイルを保存
/storage/app/public/
には保存できていて、リンクも済んでいます
ですがビューに表示できないです、
コントローラーのどこかが間違いっているのでしょうが、
全くわからないです

スクリーンショット 2021-07-21 19.20.03.png

git@github.com:kazuya0412ka/laravellesson2.git

<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = Post::all();

    return view("posts.index",compact('posts'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view ("posts.create");
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{


    $request->validate([
        'title' => 'required',
        'content' => 'required',
    ]);

    $post = new Post();
    $post->title = $request->input("title");
    $post->content = $request->input("content");
    // $post->image = $request->input("image");
    $post->time = date("Y-m-d H:i:s");


    $image =$request->file("image");





    if($request->hasfile("image")){
        $path = \Storage::put('/public',$image);
        $path = explode('/',$path);
    }else{
        $path = null;
    }

   $post->image = $path[1];

    $post->save();

    return redirect()->route("posts.show",[$post->id]);


}

/**
 * Display the specified resource.
 *
 * @param  \App\Post  $post
 * @return \Illuminate\Http\Response
 */
public function show(Post $post)
{
    return view ("posts.show",compact("post"));
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  \App\Post  $post
 * @return \Illuminate\Http\Response
 */
public function edit(Post $post)
{
    return view ("posts.edit",compact("post"));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \App\Post  $post
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, Post $post)
{

    $request->validate([
        'title' => 'required',
        'content' => 'required',
    ]);
    $post->title = $request->input("title");
    $post->content = $request->input("content");
    $post->time = date("Y-m-d H:i:s");
    $post->save();

     return redirect()->route("posts.show",[$post->id]);




}

/**
 * Remove the specified resource from storage.
 *
 * @param  \App\Post  $post
 * @return \Illuminate\Http\Response
 */
public function destroy(Post $post)
{
    $post->delete();
    return redirect()->route("posts.index");

}

}

汚いソースコードで申し訳ありませんが、とにかくビューに写真を投稿できるようにしたいです。

どうすればいいのかと、なぜそうなのかご教授願います。

0

5Answer

ファイルが正しく保存されているのだとすれば、imgタグで指定しているパスが間違っているのだと思います。
まずはviewの該当箇所と、実際どのようなパスが設定されいるか確認してください。

0Like

dd()或いはdump()を利用し$post->imageのパスはを確認してください。
そのままデータベースで確認しても宜しいです

0Like

スクリーンショット 2021-07-23 12.47.07.png
dd()でパスを確認してみたところこのようになりました。が、このパスをどのように表示したらいいかわからないですスクリーンショット 2021-07-23 12.47.00.png

0Like

既に作成されているようでしたら申し訳ないですが、
シンボリックリンクは作成していますでしょうか?

php artisan storage:link
こちらのコマンドで実行可能です。

0Like

Your answer might help someone💌