Как поставить в Ax ios запрос 2 параметра - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать простое приложение CRUD на Laravel с Vue. Js (Vuex также) В Laravel im создать контроллер ресурса UserController У меня возникла проблема с методом обновления в этом контроллере. Этот метод был принят только PUT, PATCH HTTP Запрос местоположения методов: app / Http / Controllers / Admin / UserController. php Вот так это выглядит

public function update(Request $request, $id)
{

    return $request->all();

}

В моем Vue компоненте я пытаюсь отправить 2 параметра ID и ДАННЫЕ Но все время в ответ я получаю пустой массив Это мое расположение файла Vuex: resources / js / components / admin / store / modules / user. js Это код Ax ios request:

async updateUserInfo(ctx, id, data)
{
    return new Promise((resolve, reject) => {
        axios({
            url: '/users/' + id,
            method: 'put',
            data: data,
            headers: {'Content-Type': 'multipart/form-data'},
        })
            .then((resp) => {
                console.log(resp)
                // ctx.commit('updateUser', resp.data.user)
                resolve(resp)
            })
            .catch((error) => {
                console.log(error)
                // ctx.commit('updateErrors', error.response.data.errors);
                reject(error)
            })
    })
},

Это мой Vue Компонент, в котором я пытаюсь вызвать это расположение функции: ресурсы / JS / Компоненты / Администратор / Представления / Компоненты / Пользователь / EditComponent. vue Код:

data()
    {
        return{
            formData: {
                address: '',
                birthday: '',
                email: '',
                name: '',
                password: '',
                passwordConfirmation: '',
                phone: '',
                surname: '',
            }
        }
    },

methods:{
        ...mapActions('user', ['editUserInfo', 'updateUserInfo']),

        async onClickUpdateInfo(id)
        {
            this.updateUserInfo(id, this.formData);
        }
    },

Моя кнопка Отправить в форме

<button @click.prevent="onClickUpdateInfo(id)" class="btn btn-success text-white">Обновить</button>[![enter image description here][1]][1]

1 Ответ

1 голос
/ 27 марта 2020

Вы должны передать context и payload в действие Vuex. Так что я предполагаю, что у вас нет доступа к данным формы внутри вашего действия, верно?

Попробуйте это: async updateUserInfo(ctx, { id, data })

А затем в компоненте vue: this.updateUserInfo({ id, data: this.formData });

...