如何更改复选框在Laravel中返回'on'值



我想创建一个新用户,这是我的视图:

<form enctype="multipart/form-data" action="/user/create" method="POST">
                <label>Naam</label>
                <input type="text" name="name" id="name">
                <label>Email</label>
                <input type="text" name="email" id="email">
                <label>Password</label>
                <input type="text" name="password" id="password">
                <label>Admin</label>
                <input type="checkbox" name="admin" id="admin"><label for="admin">Admin</label>
                <label>Safety Settings</label>
                <input type="checkbox" name="watchDashboard" id="watchDashboard"><label for="watchDashboard">Watch Dashboard</label><br>
                <input type="checkbox" name="watchBlocks" id="watchBlocks"><label for="watchBlocks">Watch Blocks</label>
                <input type="checkbox" name="editBlocks" id="editBlocks"><label for="editBlocks">Edit Blocks</label>
                <input type="checkbox" name="watchWastes" id="watchWastes"><label for="watchWastes">Watch Wastes</label>
                <input type="checkbox" name="editWastes" id="editWastes"><label for="editWastes">Edit Wastes</label>
                <input type="checkbox" name="watchGrondstof" id="watchGrondstof"><label for="watchGrondstof">Watch Grondstof</label>
                <input type="checkbox" name="editGrondstof" id="editGrondstof"><label for="editGrondstof">Edit Grondstof</label>
                <input type="checkbox" name="manageUsers" id="manageUsers"><label for="manageUsers">Manage Users</label>
                {{ csrf_field() }}
                <input type="submit" class="pull-right btn btn-sm btn-primary">
            </form>

当我点击提交按钮时,我想获得数据库中的数据:

public function create(Request $request){
    $user = new User();
    $user::create(
        $request->all()
    ); 
}

当我点击提交时,我得到这个错误:

一般错误:1366不正确的整数值:'on'为列。

我如何确保当我做$request->all()时on值为真或1?

谢谢!

在将数据传递给模型之前如何修改数据?

public function create(Request $request){
    $data = $request->all();
    $data['watchDashboard'] = $request->watchDashboard ? 1 : 0;
    $data['watchBlocks'] = $request->watchBlocks? 1 : 0;
    ..... (other checkboxes)
    $user = new User();
    $user::create($data); 
}

我没试过,但这就是我的想法。

我通常使用如下输入:在<form>元素之后,我插入隐藏的输入,其名称与复选框输入相同,但使用默认值—在本例中为0—并为复选框添加value属性—在本例中设置为1。这样,如果未选中复选框,则元素被设置为0,但如果用户选中了输入,则将覆盖隐藏输入的值。

最新更新