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> 
+0

感谢您的答案,但它不工作。不知道是否它是控制器或导致问题的路线 –

+0

嘿可以发布生成的HTML吗? –

如果你想使它更安全,你应该使用像你一样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> 

正如你所看到的我已在链接的末尾添加完成,因为它可能与您的其他获取路线有冲突。