2017-06-28 88 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

我的數據庫中沒有任何反應。我設置了新車型自動。在我的數據庫中爲true。 但是,如果我切換「脫機聯機」我得到一個錯誤,並沒有發生在我的數據庫中。 RouteCollection.php中的MethodNotAllowedHttpException行207: –

+0

'if(checked ===「Online」){'在此檢查了什麼? –

回答

0

這對我來說是什麼,你是刷新頁面,每次點擊,但通過預定義檢查,他們會,如果代碼工作,總是取消選中他們在數據庫中。

您未通過任何$id到URL中,因此job未加載。 選中將出現未定義,變量未設置。

試圖用內聯JS做到這一點效率不高。我假設你已經加載jQuery,如果你沒有,我非常建議你爲簡單和容易發送數據。

下面的答案只是一個基本的重寫,你可以做什麼來達到預期的效果。

//複選框

<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(); 
     } 
    } 
}