Php 如何在单击按钮时在表中递增LAVEL
我有Home.blade.php,如果我在其中单击Php 如何在单击按钮时在表中递增LAVEL,php,laravel,Php,Laravel,我有Home.blade.php,如果我在其中单击投票按钮,它应该会增加候选表中的计数 home.blade.php @foreach ($file as $show) <div class="col-md-3" style="margin-bottom: 20px;"> <div class="card"> <img src="{{$show->image}}" style="width:100%">
投票按钮
,它应该会增加候选表中的计数
home.blade.php
@foreach ($file as $show)
<div class="col-md-3" style="margin-bottom: 20px;">
<div class="card">
<img src="{{$show->image}}" style="width:100%">
<div class="card-body">
<h5 class="title">President</h5>
<p class="card-text">Name : {{$show->name}}</p>
<a href="return Homecontroller@Count"> <button>VOTE</button> </a>
</div>
</div>
</div>
@endforeach
Route::put('/votesUp/{vote}', 'HomeController@upVote')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'HomeController@downVote')->name('votes.downVote');
路线
Route::get('/home','Homecontroller@Count');
请帮助我增加计数,如果没有,请使用此方法。在迁移过程中,请确保列计数为整数类型 以及: 你写错了
<a href="return Homecontroller@Count"> <button>VOTE</button> </a>
换成
<a href="{{action(Homecontroller@Count)}}"> <button>VOTE</button> </a>
是的,有更好的方法 将其添加到web.php中
@foreach ($file as $show)
<div class="col-md-3" style="margin-bottom: 20px;">
<div class="card">
<img src="{{$show->image}}" style="width:100%">
<div class="card-body">
<h5 class="title">President</h5>
<p class="card-text">Name : {{$show->name}}</p>
<a href="return Homecontroller@Count"> <button>VOTE</button> </a>
</div>
</div>
</div>
@endforeach
Route::put('/votesUp/{vote}', 'HomeController@upVote')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'HomeController@downVote')->name('votes.downVote');
在视图列表中,它是index.blade.php
添加这两个按钮
制表方式
DB门面方式
解释:
当您点击upvote按钮时,候选人
表格中的存档投票数
增加了1
当您点击下一票按钮时,候选人
表中的field票数
将递减1
编辑未定义的候选变量
找到这条线
@foreach($candidates as $item)
并替换为
@foreach ($file as $item)
修复
类App\Http\Controllers\HomeController不存在 从 到 您的控制器类 主控制器 但我把它写错了 主控制器
投票按钮应如下所示:
<a href="{{ action('Homecontroller@Count' }}"><button>VOTE</button></a>
由于上面很好地回答了Upvote和Downvote等功能,我还将添加节流功能。现在,创建一个bot很容易,即使您使用csrf令牌,它也会发送upvote请求 我想补充:
'middleware' => 'throttle:5'
每个IP地址每分钟只允许5个请求。不是完全阻止它,而是让它变得更难
Route::put('/votesUp/{vote}', 'Homecontroller@upVote')->middleware('throttle:5')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'Homecontroller@downVote')->middleware('throttle:5')->name('votes.downVote');
你的代码是正确的。您面临的问题是什么?请确保您的列
count
在迁移过程中是整数。是否可以告诉您是否单击该按钮,然后它将被调用到您的控制器方法?它会给出404错误“Action App\Http\Controllers”\Homecontroller@Count没有定义。(View:/home/sachin/dd/sjc-voting-system/sjcvoting/resources/views/home.blade.php)“确保您给出了正确的控制器路径****您能为我推荐任何ajax函数或javascript吗谢谢,但它显示了错误未定义的变量candidate谢谢我这么做了,但现在我遇到了这种错误。”“Class App\Http\Controllers\HomeController不存在”如果您的问题已解决,请将问题标记为已回答,以便将来会有所帮助非常感谢您的想法。
Route::put('/votesUp/{vote}', 'HomeController@upVote')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'HomeController@downVote')->name('votes.downVote');
Route::put('/votesUp/{vote}', 'Homecontroller@upVote')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'Homecontroller@downVote')->name('votes.downVote');
<a href="{{ action('Homecontroller@Count' }}"><button>VOTE</button></a>
'middleware' => 'throttle:5'
Route::put('/votesUp/{vote}', 'Homecontroller@upVote')->middleware('throttle:5')->name('votes.upVote');
Route::put('/votesDown/{vote}', 'Homecontroller@downVote')->middleware('throttle:5')->name('votes.downVote');