Reputation: 185
Before question , This is my code
Show.blade.php
@foreach ($comments as $comment)
@if ($comment->post_id == $post->id)
.....
<form action="{{ route('createreply', ['rid' => $comment->id]) }}" method="POST">
@csrf
<input type="text" class="form-control" name="replyContent" id="replyContent" style="color:white" />
<button type=" submit" style=" color :lavender " class="btn btn-secondary">comment</button>
</form>
....
@endif
@endforeach
(( comment is original comment, and i made reply for answer of comment ))
web.php (route)
Route::post('/replycreate', [CommentController::class, 'createReply'])->name('createreply');
my controller (comment)
public function createReply(Request $request, $rid)
{
$reply = new Reply();
$reply->replyContent = $request->replyContent;
$reply->user_name = Auth::user()->name;
$reply->comment_id = $rid;
dd($reply);
$reply->save();
return redirect()->back();
}
I have problem with making re-reply, and my code returns error and it says
Too few arguments to function App\Http\Controllers\CommentController::createReply(), 1 passed in C:\Users\ALSACE\post-app\vendor\laravel\framework\src\Illuminate\Routing\Controller.php on line 54 and exactly 2 expected
I tought i had used two argument , but this kind of error occurs.
so i tought using dd($reply)
,
dd()
can't even complete.
you can guess $rid
is empty .. but in the same Show.blade.php
, I had used $comment
with no problem so i think i can not be problem.
plz help with newbe Laravel student!!
Upvotes: 0
Views: 57
Reputation: 23011
You forgot to add the id to the route itself. If you're going to require it in the function parameters, then it needs to be added on the route URL.
Route::post('/replycreate/{rid}', [CommentController::class, 'createReply'])->name('createreply');
Upvotes: 1
Reputation: 4153
Your createReply
method expect 2 arguments, BUT you don't have variable in your route.
You must change the route to:
Route::post('/replycreate/{rid}', [CommentController::class, 'createReply'])->name('createreply');
Upvotes: 1