在线或离线设置

时间:2017-06-28 11:43:43

标签: php laravel

我使用Laravel 5.0,我需要在线/离线设置模型。我在bootstrap中使用了一个切换复选框:

<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}','JobController@changeState');

我在我的数据库True或False / Online或Offline

中设置了布尔值

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

这对我来说是这样的,您每次点击都会刷新页面,但是通过预定义检查,如果代码有效,他们将始终在数据库中取消选中它们。

您没有将任何$id传递到网址中,因此未加载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>

// controller

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