我正在尝试为项目中的博客文章创建一个类似/不喜欢按钮系统。我正在使用axios发送一个请求到控制器,如果任何点击类似或不喜欢按钮。
这是我在家庭刀片上的脚本
<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路由中的路由::(‘post’,PostsController::class);
发布于 2020-12-16 17:11:57
资源路由Route::resource('posts', PostsController::class);
没有使/posts/{post}/react
可用,它只提供CRUD路由(索引、创建、编辑.)可用。(可用操作的完整列表可在文档:资源控制器处理的操作中找到)
您需要添加一个专门处理用例的路由。将此路由添加到web.php
中
Route::post('/posts/{id}/react', [PostController::class, 'react']);
https://stackoverflow.com/questions/65326592
复制相似问题