【发布时间】:2021-03-27 07:27:07
【问题描述】:
我正在尝试为项目中的博客文章创建一个喜欢/不喜欢按钮系统。如果单击“喜欢”或“不喜欢”按钮,我正在使用 axios 向控制器发送请求。
这是我的 home Blade 上的脚本
<div class="d-flex justify-content-center">
<button type="button" class="btn btn-outline-success btn-sm " onclick="actOnReact(event);" data-react-id="{{$posts->id}}">Like</button>
<p id="likes-count-{{$posts->id}}"> {{$posts->post_like}} </p>
<p> </p>
<button type="button" class="btn btn-outline-warning btn-sm" onclick="actOnReact(event);" data-react-id="{{$posts->id}}">Dislike</button>
<p id="dislikes-count-{{$posts->id}}">{{$posts->post_dislike}}</p>
</div>
@section('js')
<script>
var updateReactStats = {
Like:function (reactId) {
document.querySelector('#likes-count-' + reactId).textContent++;
},
Dislike:function (reactId) {
document.querySelector('#dislikes-count-' + reactId).textContent++;
}
}
var actOnReact = function (event) {
var reactId = event.target.dataset.reactId;
var action = event.target.textContent;
updateReactStats[action](reactId);
axios.post('/posts/' + reactId + '/react',
{ action: action })
.then((response)=>{
console.log(response)
}).catch((error)=>{
console.log(error.response.data)
})
};
</script>
@endsection
我的 HomeController.php 部分
/**
* increment like or dislike for the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function react(Request $request, $id)
{
$action = $request->get('action');
switch ($action) {
case 'Like':
Post::where('id', $id)->increment('post_like');
break;
case 'Dislike':
Post::where('id', $id)->decrement('post_dislike');
break;
}
return '';
}
我在 web.php 中的路线 Route::resource('posts', PostsController::class);
【问题讨论】:
-
您发布到
'/posts/' + reactId + '/react',但您的路线是'/chirps/{id}/act' -
对不起!从两个并行项目复制。现在我编辑纠正了一个,但错误仍然是一样的。
-
基本一样,404告诉你,你发帖的路由不存在。
Route::resource('posts'...not 使/posts/{post}/react可用,您需要先在 web.php 中添加该路由。 -
Route::resource('posts', PostsController::class)不是说任何post请求都会被路由到PostsController?