Заполнение флажков данными из базы данных - PullRequest
0 голосов
/ 15 ноября 2018

Как заполнить каждый флажок ролью пользователя?Тупая вещь, чтобы застрять, но что-нибудь поможет.

$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 голосов
/ 15 ноября 2018

Как уже упоминали другие люди, у вас есть ошибки в атрибутах name и id для флажков, так как в настоящее время они всегда будут одинаковыми.Однако здесь есть еще более зловещая проблема.

        $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, это примерно настолько хорошо, насколько я могу комментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...