2017-07-15 8 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']); 
} 

そして最後に、私のルート、私は最大の疑問を持っています。私は2つの相反するルート

Route::get('job/detail/{job}', '[email protected]'); 
Route::put('job/detail/{job}', '[email protected]'); 

が存在することがあるので、私は、任意のフォームを使用していない、と私は、ボタンのクリックから右の更新をやってみたかったです。それは可能ですか?

答えて

0

はこれを試してみてください答えを

おかげで、URLを少し変更しようと、これは働くだろう。試してみて、あなたはそれがより多くのあなたが行ったようにあなたがPUTメソッドを使用する必要があります確保したいと思います場合

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

を教えて:フォームを使用せずに

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> 

あなたが見ることができるように私は、あなたの他のルートを取得することと矛盾するかもしれないので、リンクの終わりに完了を追加しました。