我如何从表单验证并保存复选框中的值?

时间:2019-11-05 06:13:26

标签: php laravel

我正在Laravel 5.8中创建待办事项列表,我要执行任务的表中的一个字段是状态,该值具有布尔值。我想当状态等于 0(取消选中)时将成为待办事项,而如果等于1 则将完成(选中)。 下图是我对任务的CRUD,也是所选的第三个任务,因为我从MySQL输入了该值(状态= 1)。但是我想更改此值,以便在我的报表中对其进行编辑,但是我无法从Form中进行更改。

Task table

这是我要更新任务的时间 Updating task

如我之前所说,如果我检查最后一个“参数”,则不会保存它。

我的edit.blade.php中有复选框的下一个代码

<div class="row">
    <div class="form-check izquierda" >
        <label class="form-check-label">   
            <input type="checkbox" class="form-check-input" name="status" value="{{$task->status}} "{{$task->status==1 ? 'checked' : ''}}>
            <span class="form-check-sign" >
                <span class="check"></span>
            </span>
            <label for="">Done</label>
        </label>
    </div>
</div>

我在TaskController.php中有以下内容

public function edit($id)
{
    $task = Task::find($id);
    return view('user.tasks.edit',compact('task'));
}

public function update(Request $request,$id)
{
    $this->validate($request,[
        'name'     => 'required',
        'notes'    => 'required',
        'schedule' => 'required',
        'status'   => '',
    ]);

    $task = Task::find($id);
    $task->name = $request->name;
    $task->user_id = Auth::user()->id;
    $task->notes = $request->notes;
    $task->schedule = $request->schedule;
    $task->status = $request->status; //false <- thats equals TODO (no done yet)
    // $task->user_id = User::find($id);

    $task->save();

    return redirect()->route('user.tasks.index')->with('successMsg','Taks sucessfully edited.');
}

那我该怎么办?我对此进行了研究,但直到现在我还是无法解决。如果您能帮助我解决这个问题,我将不胜感激。预先感谢

1 个答案:

答案 0 :(得分:0)

更改此行:

<div class="row">
    <div class="form-check izquierda" >
        <label class="form-check-label">   
            <input type="checkbox" class="form-check-input" name="status" {{ $task->status ? 'checked=checked' : '' }}>
            <span class="form-check-sign" >
                <span class="check"></span>
            </span>
            <label for="">Done</label>
        </label>
    </div>
</div>

在您的控制器上


public function update(Request $request,$id)
{
    $this->validate($request,[
        'name'     => 'required',
        'notes'    => 'required',
        'schedule' => 'required',
    ]);

    if (isset($request->status)) {
        $status = true;
    } else {
        $status = false;
    }

    $task = Task::find($id);
    $task->name = $request->name;
    $task->user_id = Auth::user()->id;
    $task->notes = $request->notes;
    $task->schedule = $request->schedule;
    $task->status = $status; 

    $task->save();

    return redirect()->route('user.tasks.index')->with('successMsg','Taks sucessfully edited.');
}