2017-06-28 61 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(); 
     } 
    } 
}