実現したいこと
chat機能で作成しているのですが、メッセージを投稿後のリダイレクト先が同じチャットページなのですが、メッセージ投稿後に登校したメッセージが表示されませんでした。
発生している問題・エラーメッセージ
投稿後に投稿したメッセージが表示されません。
該当のソースコード
views/rooms/show
1<x-app-layout> 2 <x-slot name="header"> 3 <h2 class="font-semibold text-xl text-gray-800 leading-tight"> 4 {{ $room->name }} 5 </h2> 6 <p>会議コード:{{$room->room_code}}</p> 7 </x-slot> 8 @if($room->host_id==$user->id || isset($member)) 9 <div class="romm-chat"> 10 <div class="room-chat-message"> 11 @foreach($messages as $message) 12 <div class="member-message> 13 <div class="chat-message"> 14 {!! nl2br(e($message->content)) !!}</br> 15 </div> 16 <div class="message-sub"> 17 <div class="message-time"> 18 {{ $message->created_at->format("Y年m月d日 h:i")}} 19 </div> 20 <div class="message-user"> 21 {{ $message->user->name }} 22 </div> 23 </div> 24 </div> 25 @endforeach 26 </div> 27 <div class=="room-chat-form"> 28 <form method="POST" action="{{ route('message.store') }}"> 29 @csrf 30 31 <!-- Name --> 32 <div> 33 <x-text-input id="content" class="block mt-1 w-full" type="text" name="content" :value="old('content')" required autofocus autocomplete="content" /> 34 <x-input-error :messages="$errors->get('content')" class="mt-2" /> 35 </div></br> 36 <input type="hidden" id="user_id" name="user_id" value="{{$user->id}}"> 37 <input type="hidden" id="room_id" name="room_id" value="{{$room->id}}"> 38 39 <div class="flex items-center justify-end mt-4"> 40 <x-primary-button class="ms-4"> 41 提案 42 </x-primary-button> 43 </div> 44 45 </form> 46 </div> 47 </div> 48 @else 49 <h1>入室許可を得るために、入室パスワードを入力してください</h1> 50 <form method="POST" action="{{ route('member.store') }}"> 51 @csrf 52 <div> 53 <input type="hidden" id="member_id" name="member_id" value="{{$user->id}}"> 54 <input type="hidden" id="room_id" name="room_id" value="{{$room->id}}"> 55 <input type="text" id="room_password" name="room_password" > 56 <x-primary-button class="ms-4"> 57 入室 58 </x-primary-button> 59 </div> 60 </form> 61 @endif 62</x-app-layout>
MessageController
1public function store(Request $request) 2 { 3 $user = Auth::user(); 4 $room = Room::find($request->room_id); 5 $member = Member::where('room_id', '=', $room->id) 6 ->where('member_id', '=', $user->id) 7 ->first(); 8 $messages = Message::where('room_id',$room->id) 9 ->get(); 10 $message = new Message; 11 $message->user_id = $request->user_id; 12 $message->content = $request->content; 13 $message->room_id = $request->room_id; 14 $message->save(); 15 return view('rooms/show', ['user'=>$user, 'room'=>$room, 'member'=>$member, 'messages'=>$messages]); 16 }
web.php
1Route::get('room', [App\Http\Controllers\RoomController::class, 'index'])->name('room.index'); 2Route::get('room/create', [App\Http\Controllers\RoomController::class, 'create'])->name('room.create'); 3Route::post('room', [App\Http\Controllers\RoomController::class, 'store'])->name('room.store'); 4Route::get('/room/{id}', [App\Http\Controllers\RoomController::class, 'show'])->name('room.show'); 5Route::put('room/update/{id}', [App\Http\Controllers\RoomController::class, 'update'])->name('room.update'); 6Route::resource('member', App\Http\Controllers\MemberController::class); 7Route::resource('message', App\Http\Controllers\MessageController::class);
試したこと
chat機能に関して検索してみたのですが、Pusherを使ったリアルタイムのチャット機能もあったのですが、こちらは今回の質問に関係しますか?
それともPusherを使わずに、投稿後に投稿したメッセージを表示させることは可能でしょうか?
補足情報(FW/ツールのバージョンなど)
PHP8
Laravel10
回答2件
あなたの回答
tips
プレビュー