2017-07-15 53 views
0

所以我正在構建一個應用程序來監視任務/作業。每個作業都有一個狀態,默認值爲「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]'); 

我沒有使用任何形式,我想從按鈕單擊執行更新。那可能嗎?

感謝您的回答

回答

0

試試這個,試着改變網址一下,這將工作。嘗試告訴

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嗎? –

0

如果你想使它更安全,你應該使用像你一樣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> 

正如你所看到的我已在鏈接的末尾添加完成,因爲它可能與您的其他獲取路線有衝突。