我正在构建一个应用程序,允许用户查看一本书,在同一页面上发布该书的评论,并在成功发布后查看他们的评论。我的目标是使所有事情都发生在同一页面上。
我正在使用Laravel 5.7,这就是我的代码当前的样子
web.php
Route::post('books/{book}', 'RatingController@store');
控制器
public function store(Request $request)
{
dd($request);
}
视图
<form action="/books/{{$book->id}}" method="POST">
@csrf
<input type="text" class="form-control" name="username">
<textarea class="form-control" name="comment" rows="3"></textarea>
<button type="submit" class="btn btn-primary btn-block">Post</button>
</form>
提交表单时,我看不到数据已转储,但我留在同一页面上,而URL看起来像这样http://127.0.0.1:8000/books/1?_token=gAkb9P6ryh2vVs4nj0db4gggBzqZPzUg0fQp3fCC&username=Fomsky&comment=awesome+reading
这不是我想要的行为,我想在控制器中使用request
数据,因此是我首先转储它的原因。
实现我的目标的正确方法是什么?
答案 0 :(得分:0)
尝试这样:
*******选项1 ********
路线
Route::resource('books', 'RatingController');
控制器
public function store(Request $request)
{
dd($request->all());
}
表格
<form action="{{ route('books.store') }}" method="POST">
@csrf
<input type="text" class="form-control" name="username">
<input type="hidden" name="book_id" value="{{ $book->id}}">
<textarea class="form-control" name="comment" rows="3"></textarea>
<button type="submit" class="btn btn-primary btn-block">Post</button>
</form>
*******选项2 ********
路线
Route::post('books/store', 'RatingController')->name('books_store');
控制器
public function store(Request $request)
{
dd($request->all());
}
表格
<form action="{{ route('books_store') }}" method="POST">
@csrf
<input type="text" class="form-control" name="username">
<input type="hidden" name="book_id" value="{{ $book->id}}">
<textarea class="form-control" name="comment" rows="3"></textarea>
<button type="submit" class="btn btn-primary btn-block">Post</button>
</form>