我已經寫了一個博客,現在我正在嘗試實作一個評論部分。我想要它,以便當用戶嘗試發布時,它會保存評論并將用戶重定向到同一頁面。但是當我寫評論并嘗試發布它時,應用程式會將我重定向到另一個頁面。我正在學習如何用laravel做博客,所以我不知道什么時候用url,什么時候用路由。這是我寫的代碼。
@auth
<div class="card ml-5 col-lg-8">
<ul class="list-group list-group-horizontal">
<h5 class="list-group-item active">
Comments
<h5>
<div class="card-body">
<form method="post" action="{{url('save-comment/'.Str::slug($blog->title).'/'.$blog->id)}}">
@csrf
<textarea name="comment" hljs-number">5"></textarea>
<input type="submit" hljs-number">3">
</div>
</ul>
</div>
@endauth
<div hljs-number">5 col-lg-8">
<h5 hljs-number">4">Comments<span hljs-number">2"> {{count($blog->comments)}}</span></h5>
<div hljs-number">3">
@if($blog->comments)
@foreach($blog->comments as $comment)
<blockquote hljs-string">">
<p hljs-number">0">{{$comment->comment}}</p>
<footer hljs-string">">Username</footer>
</blockquote>
<hr>
@endforeach
@endif
</div>
</div>
博客控制器:
function save_comment(Request $request,$slug,$id)
{
$request->validate([
'comment'=>'required',
]);
$data = new Comment;
$data->user_id=$request->user()->id;
$data->post_id=$id;
$data->comment=$request->comment;
$data->save();
return back();
}
路線:
Route::get('/blog/', [App\Http\Controllers\BlogController::class, 'index'])->name('blog');
Route::get('blogs/{slug}','App\Http\Controllers\BlogController@getArticles')->name('article.show');
Route::get('blog.update/{id}','App\Http\Controllers\BlogController@edit');
Route::put('blog.update/{id}','App\Http\Controllers\BlogController@update');
Route::post('save_comment/{slug}/{id}','App\Http\Controllers\BlogController@save_comment')->name('save_comment');
Route::get('/admin/blog', 'App\Http\Controllers\BlogController@getBlog')->name('admin.blog');
如果有人愿意協助提出解決此問題的方法,請幫助我。我認為問題出在我寫 url 的地方。當我將 url 更改為路由時,它給我一個未定義路由的錯誤。
Route::resource('/blog','App\Http\Controllers\BlogController');
uj5u.com熱心網友回復:
請像這樣更改您的代碼并檢查...
action="{{route('save_comment', $blog->id])}}"
Route::post('save_comment/{id}','App\Http\Controllers\BlogController@save_comment')->name('save_comment');
**BlogController**
function save_comment($id, Request $request)
{
$request->validate([
'comment'=>'required',
]);
$data = new Comment;
$data->user_id=$request->user()->id;
$data->post_id=$id;
$data->comment=$request->comment;
$data->save();
return back();
}
uj5u.com熱心網友回復:
它會將您重定向到一個空頁面,因為您在路由的url上犯了一個錯誤。在您的web.php檔案中,您的路線是:
Route::post('save_comment/{slug}/{id}', 'App\Http\Controllers\BlogController@save_comment')->name('save_comment');
在您的表單中,您寫道save-comment/:
<form method="post" action="{{url('save-comment/'.Str::slug($blog->title).'/'. $blog->id)}}">
錯誤是由于這個。因此,我建議您像這樣修改表單中的操作save_comment/:
<form method="post" action="{{url('save_comment/'.Str::slug($blog->title).'/'. $blog->id)}}">
這應該是固定的!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/321849.html
