用数据库中的数据填充复选框

时间:2018-11-15 10:59:04

标签: php arrays laravel if-statement

如何用用户角色填充每个复选框?愚蠢的事情要坚持下去,但是任何事情都会有所帮助。

$userRoles正在使用所有用户及其角色打印JSON

$total_row = $data->count();
            $output = "";
            if ($total_row > 0) {
                foreach ($data as $row) {
                    $roleNames = '';
                    $userRoles = $row->roles;
                    $checked = '';
                    foreach (Role::all() as $roles1) {
                        if (in_array($roles1, (array)$userRoles)) {
                            $checked = 'checked="checked"';
                        }
                        $roleNames .= $roles1->role != null ? $roles1->role.' '.'<input type="checkbox" '.$checked.' name="role" value="'.$roles1->id.'" class="checkbox" id="checkboxId">'.' ' : '';
                    }
                    $output .= '
                        <tr>
                            <td>'.$row->surname.'</td>
                            <td>'.$row->name.'</td>
                            <td>'.$row->phone.'</td>
                            <td>'.$roleNames.'</td>
                            <td>'.$userRoles.'</td>
                            <td><button type="button" id="rowId" class="remove-button btn btn-danger" data-id="'.$row->id.'">
                            <div class="close">&#120;</div>
                            </button></td>
                        </tr>
                    ';
                }

1 个答案:

答案 0 :(得分:0)

正如其他人所提到的,您的复选框的nameid属性中存在错误,因为当前它们始终是相同的。但是,这里存在一个更大,更险恶的问题。

        $checked = '';
        foreach (Role::all() as $roles1) {
            if (in_array($roles1, (array)$userRoles)) {
                $checked = 'checked="checked"';
            }
            $roleNames .= $roles1->role != null ? $roles1->role . ' ' . '<input type="checkbox" ' . $checked . ' name="role" value="' . $roles1->id . '" class="checkbox" id="checkboxId">' . ' ' : '';
        }

此代码块遍历所有角色,如果用户具有角色,则用字符串更新$checked变量。问题是,$checked变量在循环的 中。因此,如果在第一次迭代中通过了真实性测试,它将变量更新为字符串'checked =“ checked”',但是如果所有其他角色均未通过,则它们不会将变量更改为空,因此所有检查框将被选中。

在不了解角色的json结构是什么的情况下,这大约是我所能评论的。