2017-06-28 18 views
-1

私はLaravel 5.0を使用しています。モデルをオンライン/オフラインに設定する必要があります。私は、ブートストラップからトグルチェックボックスを使用します。オンラインまたはオフラインに設定する

<td> 
<input onchange="window.location.href='/changestate'" type="checkbox" checked data-toggle="toggle" data-on="Online" data-off="Offline" data-size="mini" > 
</td> 

私のコントローラの私の機能:

public function changeState($id) 
{ 

if (checked === "Online") { 
    $job->confirmed=1; 
    $job->save(); 
} else if (checked ==="Offline") { 
     $job->confirmed=0; 
     $job->save(); 
} 
return redirect('/'); 
} 

と私の機能のためのルート:私は真の私のデータベースにブール値を設定し

Route::get('/changeState/{id}','[email protected]'); 

または偽/オンラインまたはオフライン

誰かが私を助けることができますか?

+0

? – Jerodev

+0

私のデータベースに何も起こりません。私は新しいモデルの自動車を設定します。私のデータベースには真実。 しかし、私が "オフラインからオンライン"に切り替えると、エラーが発生し、データベースに何も起こりません。 RouteCollection.php行のMethodNotAllowedHttpException 207: –

+0

'if(チェック==="オンライン "){'これは何が ''チェックされていますか? –

答えて

0

クリックするたびにページをリフレッシュしていますが、チェックをあらかじめ定義しておくことで、コードが正常に機能していれば、DBでは常にチェックを外します。

$idはURLに渡されないため、jobはロードされません。 チェックは未定義と表示され、変数は設定されません。

インラインJSで行うのは効率的ではありません。私はあなたがjQueryをロードしたと仮定しますが、そうでない場合は、シンプルさとデータの送信が容易であることをお勧めします。

次の回答は、あなたがCOULDの期待した結果を達成するための基本的な書き直しに過ぎません。

//問題のようです何のチェックボックス

<td> 
    <input class="changeStatus" data-modelid="{{ $model->id }}" 
    type="checkbox" {{ ($model->confirmed == 1) ? 'checked' : '' }} 
    data-toggle="toggle" data-on="Online" data-off="Offline" 
    data-size="mini" 
    > 
</td> 

// JS

<script> 
$('.changeStatus').change(function() { 
    var modelId = $(this).data('modelid'); 
    var checked_status = $(this).prop('checked'); 
    var checked; 
    if(checked_status == true) checked = 1; else checked = 0; 
    $.ajax({ 
     url: '/changestate/'+modelid+'?checked='+checked, 
     type: 'get' 
    }); 
}); 
</script> 

//コントローラ

use Illuminate\Http\Request; 
public function changeState(Request $request, $id) 
{ 
    if($request->query('checked')) { 
     if($request->query('checked') == 1 || $request->query('checked') == 0) { 
      $job = Model::find($id); 
      $job->confirmed = $request->query('checked'); 
      $job->save(); 
     } 
    } 
} 
関連する問題