我有一个错误说:
函数 App\Http\Controllers\CommentController::store() 的参数太少,通过了 1 个,预期正好有 2 个。CommentController 是评论表的控制器。
该store()函数执行以填充评论表中的行,重要参数之一是发表评论的帖子 ID。posts 是一个单独的表,帖子的 id 用于链接评论表中的所有评论。
评论控制器中的 store()
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request, $id)
{
$post = Post::find($id);
$this->validate($request, [
'comment' => 'required',
'v_email' => 'required'
]);
$comment = new Comment;
$comment->comment_body = $request->input('comment');
$comment->viewer_email = $request->input('v_email');
$comment->post_id = $post->id;
$comment->save();
return redirect('/posts')->with('success', 'commented');
}
web.php 中的路由 (我使用 route::resource 将每个以注释开头的 url 重定向到 CommentController)
Route::resource('comment', CommentController::class);
刀片形式
{!! Form::open(['action' =>['App\Http\Controllers\CommentController@store', $posts->id] , 'method'=>'POST']) !!}
<div class="form-group">
{{Form::label('comment', 'Comment')}}
{{Form::textarea('comment','',['class'=>'form-control', 'placeholder'=>'Tell us what you think...'])}}
</div>
<div class="form-group">
{{Form::label('v_email', 'Email')}}
{{Form::text('v_email','',['class'=>'form-control', 'placeholder'=>'Please enter your email. It will be just between us'])}}
</div>
{{Form::submit('Send',['class'=>'btn btn-primary'])}}
{!! Form::close() !!}