

例えば「ユーザーが画像を投稿しなかった時」などで画像がない時は、「””」や「代替えテキスト」を入れ込むなどしたいと思っています。  
画像だと重くなりそうなので、今回はテキストで考えています。

検索に引っかからず、参考になる記事も見つからず困っています。  
条件分岐して, returnで戻り値を設定して表示されると思うんですが、、、

[![画像の説明をここに入力](https://i.stack.imgur.com/LYmDM.png)](https://i.stack.imgur.com/LYmDM.png)

### PostsController.php

[code]

        /**
         * 投稿一覧表示アクション
         */
        public function index(Request $request)
        {
            $searchword = $request->searchword;
    
            $posts = Post::with(['comments', 'category']) # クエリーの調整
                ->orderBy('created_at', 'desc')
                ->fuzzyNameMessage($searchword)
                ->paginate(10); 
            
            return view('bbs.index', [ 
                'posts' => $posts,
                'searchword' => $searchword
            ]);
        }
    
        /**
        * 詳細
        */
        public function show(Request $request, $id)
        {
            $user = auth()->user();
            $post = Post::findOrFail($id);
    
            return view('bbs.show', compact('post'));
        }
    
[/code]

### index.blade.php

[code]

            @foreach ($posts as $post)
                <tr>
                    <td>{{ optional ($post)->id }}</td>
                    <td>{{ optional ($post->created_at)->format('Y.m.d') }}</td>
                    <td>{{$post->user->name}}</td>
                    <td>{{ optional ($post)->subject }}</td>
                    <td><img src="{{ asset('/storage/'.$post->image_file)}}" width="150px"></td>
                    <td>{!! nl2br(e(Str::limit($post->message, 100))) !!}
                    @if ($post->comments->count() >= 1)
                        <p><span class="badge badge-primary">コメント：{{ optional ($post->comments)->count() }}件</span></p>
                    @endif
                    </td>
                    <td class="text-nowrap">
                        <p><a href="{{ action('PostsController@show', $post->id) }}" class="btn btn-primary btn-sm">詳細</a></p>
                        @can('edit', $post)
                            <p><a href="{{ action('PostsController@edit', $post->id) }}" class="btn btn-info btn-sm">編集</a></p>
                            <p>
                                <form method="POST" action="{{ action('PostsController@destroy', $post->id) }}">
                                    @csrf
                                    @method('DELETE')
                                    <button class="btn btn-danger btn-sm">削除</button>
                                </form>
                            </p>
                        @endcan
                    </td>
                </tr>
            @endforeach
    
[/code]


CC BY-SA 4.0
2021-03-20T02:57:45.117
74775
2021-03-20T05:56:20.270
2021-03-20T05:56:20.270
3060
44328
question
php laravel
画像がない時表すマークの変更方法（テキストに変えたい）


`$post->image_file` は画像パスが入っている想定で回答します

Viewでimage_fileが空文字（またはNULL）の場合に代替テキストを表示すると良いです

**index.blade.php**

[code]

    {{-- 省略 --}}
    <td>{{ optional ($post)->subject }}</td>
    <td>
      @if (empty($post->image_file))
        画像なし
      @else
        <img src="{{ asset('/storage/'.$post->image_file)}}" width="150px">
      @endif
    </td>
    <td>{!! nl2br(e(Str::limit($post->message, 100))) !!}
    {{-- 省略 --}}
    
[/code]


CC BY-SA 4.0
2021-03-20T05:55:45.080
74776
2021-03-20T05:55:45.080
298
74775
answer