Поле ролей для заполнения флажков Laravel с пользовательскими ролями в модальной форме редактирования ajax - PullRequest
0 голосов
/ 17 сентября 2018

Привет, ребята, я мог бы использовать некоторую помощь из сообщества stakoverflow на этот раз, дело в том, что у меня есть индексное представление, из которого запускаются все методы, метод create работает отлично, метод update тоже работает нормально, проблема в том, когда в форме редактирования отображается флажок, который указывает, что роль пользователя не отображается, отмечен флажком, я должен повторно проверить флажок для обновления метода, чтобы работать, иначе это не будет работать, вот мой код.

Редактировать модал:

{{ Form::open(['autocomplete' => 'off', 'id' => 'edit_user_form']) }}
    <div id="edit_user_modal" class="modal fade" role="dialog">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title text-center">Actualizar Usuario</h4>
                </div>
                <div class="modal-body">
                    <div id="response"></div>
                    {{ Form::textGroup('name', 'Nombre', ['id' => 'edit_name']) }}
                    {{ Form::emailGroup('email', 'Correo Electrónico', ['id' => 'edit_email']) }}
                    {{ Form::checkboxGroup('roles', 'Roles', $roles, 'display_name', ['id' => 'edit_roles']) }}
                </div>
                <div class="modal-footer">
                    {{ Form::submit('Guardar', ['class' => 'btn btn-success']) }}
                    <button type="button" class="btn btn-default" data-dismiss="modal">Regresar</button>
                </div>
            </div>
        </div>
    </div>
    {{ Form::close() }}

Способ редактирования:

public function edit(Request $request)
    {
        $id = $request->input('id');

        $user = User::with('roles')->find($id);

        return response()->json($user);
    }

Кнопка редактирования:

protected function getEditButtonAttribute()
    {
        if (Auth::user()->hasPermission('update-users')) {
            if ($this->id != 1) {
                return '<li><a href="javascript:void(0);" class="btn-edit" id="' . $this->id . '">Editar Usuario</a></li>';
            }

            return '';
        }

        return '';
    }

Редактировать маршрут:

Route::get('user/{user}', 'Auth\UserController@edit')->name('user.edit');

И, наконец, отредактируйте скрипт:

edit_name = $('#edit_name');

edit_email = $('#edit_email');

edit_roles = $('#edit_roles');

edit_user_modal = $('#edit_user_modal');

$(document).on('click', '.btn-edit', function () {
    id = $(this).attr("id");
    $.ajax({
        url: "{{ url("user") }}" + "/" + id,
        method: 'GET',
        data: {id: id},
        dataType: 'json',
        success: function (data) {
            edit_name.val(data.name);
            edit_email.val(data.email);
            edit_roles.val(data.roles);
            edit_user_modal.modal('show');
        }
    })
});

Спасибо за внимание.

1 Ответ

0 голосов
/ 17 сентября 2018

Из вашего кода похоже, что «роль» определена не в вашей пользовательской модели, а как отношения.Если это так, то типичная привязка к модели формы, вероятно, не работает так, как вы ожидаете.Чтобы исправить это, вы можете попытаться использовать свойство «appends» для вашей модели User и включить «role» в качестве добавленного свойства.Тогда он будет загружаться изначально.Если это не сработает, я бы посоветовал вам просто создать поле формы самостоятельно, а не полагаться на фасад формы, поскольку у вас будет гораздо больший контроль над вводом и вы сможете легко переопределить встроенные функции помощников форм Laravel.

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