Laravel 5.3数据库从按钮更新点击
问题描述:
所以我正在构建一个应用程序来监视任务/作业。每个作业都有一个状态,默认值为“1”。如果已经完成,用户将点击一个按钮,这会将状态更改为“2”,表示完成。不过,我目前还没有取得成功,我将需要你的帮助。Laravel 5.3数据库从按钮更新点击
到目前为止,这是我做了什么
按钮链接:
<p>
{{ link_to('job/detail/' . $job->id, 'Finish Task', ['class' => 'btn btn-primary btn-lg']) }}
</p>
控制器:
public function finish($id)
{
$job = Job::findOrFail($id);
$job->update(['status' => '2']);
}
最后,我的路线,这是我最大的疑点。因为我可能有两条相冲突的路线
Route::get('job/detail/{job}', '[email protected]');
Route::put('job/detail/{job}', '[email protected]');
我没有使用任何形式,我想从按钮单击执行更新。那可能吗?
感谢您的回答
答
试试这个,试着改变网址一下,这将工作。尝试告诉
Route::get('job/detail/{job}/action', '[email protected]');
public function finish($id)
{
Job::find($id)->update(['status' => '2']);
}
<p>
{{ link_to('job/detail/' . $job->id. '/action', 'Finish Task', ['class' => 'btn btn-primary btn-lg']) }}
</p>
答
如果你想使它更安全,你应该使用像你一样PUT方法:
Route::put('job/detail/{job}/finished', '[email protected]');
/*********/
public function finish(Request $request,Job $job){
$this->validate($request,[
'status'=>'required|in:2'
]);
$job->update(['status'=>$request->only('status')]);
}
/*********/
<form action="/job/detail/{{$job->id}}/finished" method="POST">
{{csrf_field()}}
<input type="hidden" name="_method" value="PUT"></input>
<input type="hidden" name="status" value="2"></input>
<button type="submit" class="btn btn-primary">Change Staus</button>
</form>
不使用形式:
Route::get('job/detail/{job}/finished', '[email protected]');
/*********/
public function finish(Job $job){
$job->update(['status'=>2);
}
/*********/
<a href="/job/detail/{{$job->id}}/finished" class="btn btn-primary">Change Status</a>
正如你所看到的我已在链接的末尾添加完成,因为它可能与您的其他获取路线有冲突。
感谢您的答案,但它不工作。不知道是否它是控制器或导致问题的路线 –
嘿可以发布生成的HTML吗? –