Отсутствует параметр для именованного маршрута после успешного вызова API - PullRequest
0 голосов
/ 12 июля 2020

У меня есть компонент настроек, где пользователь может обновлять свою информацию, после успешного обновления я получаю в консоли отсутствующий параметр для именованного маршрута, и все входы, которые должны содержать пользовательские данные, пусты, и когда я пытаюсь получить доступ к настройкам page он перенаправляет на домашнюю страницу, даже если все данные, необходимые для его работы, все еще находятся в данных компонента. Это метод компонента, который выполняет действие в хранилище vuex

    updateUser(){
            const fd = new FormData()
            //check if avatar is of type file
            if ('File' in window && this.avatar instanceof File){
                fd.append('avatar', this.avatar, this.avatar.name)
            }
            fd.append('_method', 'PUT')
            fd.append('city_id', this.userData? this.userData.city.id:this.city)
            fd.append('oldPassword', this.oldPassword)
            fd.append('newPassword', this.newPassword)

            this.$store.dispatch('User/update', fd)
                .then(() =>{
                  this.success = this.user.user.message
                }).catch(err => {
                this.error = err.response.data.message
            })
        }

вышеуказанный метод запускает это действие vuex

    update({commit}, user){
    return axios.post(`/api/${user.name}/update`, user)
        .then(( {data} ) => {
            commit('UPDATE_USER_DATA', data)
        })
}

И вот мутация UPDATE_USER_DATA

    UPDATE_USER_DATA(state, userData){
    let user = localStorage.getItem('user')
    const data = JSON.parse(user)
    state.user.user = userData
    data['user'] = userData
    localStorage.setItem('user', JSON.stringify(data))
}

Это метод laravel, который называется

    public function update(User $user, Request $request)
{
    $attributes = [];
    if(request('city_id') && $request['city_id'] !== null){
        $attributes['city_id'] = $request['city_id'];
    }
    if (request('oldPassword') &&  Hash::check($request['oldPassword'], auth()->user()->getAuthPassword())
    ){
        if(request('newPassword')) {
            $attributes['password'] = Hash::make($request['newPassword']);
        }
    } else{
        return response()->json([
            'message' => "L'ancien mot de passe est incorrecte.",
            'user' => $user
        ], 400);
    }

    if (request('avatar')) {
        $attributes['avatar'] = request('avatar')->store('avatars');
    }

    // This is where I have the issue
    if (!empty($attributes)){
        if($user->update($attributes)){
            return response()->json([
            'user' => $user,
            'message' => 'Votre compte a été modifié avec succés'
            ], 200);
        }
    }

    return response()->json([
        'message' => "Votre compte n'a pas été modifié, réessayez plus tard",
        'user' => $user
    ], 400);
}
...