Вызов неопределенного метода Person :: id () - PullRequest
0 голосов
/ 13 апреля 2020

Происходит что-то действительно странное, когда я не загружаю никакое изображение в форму, оно не выдает никакой ошибки, но когда я это делаю, оно выдает следующее: Call to undefined method App\Models\User_Management\Person::id()

Front-End Code

<template>
<div>
    <div class="container-2 mx-8 mt-10">
        <v-row>
            <v-col xs="12" sm="12" md="8">
                <v-card>
                    <v-form enctype="multipart/form-data">

                        <div class="container-2 mx-2">
                            <!-- Personal information -->
                            <v-divider></v-divider>
                            <p class="mt-2">Personal information</p>
                            <v-row>
                                <v-col cols="12" sm="12" md="4">
                                    <v-text-field v-model="person.first_name" counter="150" :rules="id="first_name" name="first_name" label="First Name" color="black"></v-text-field>
                                </v-col>

                                <v-col cols="12" sm="12" md="4">
                                    <v-text-field label="Last Name" v-model="person.last_name" counter="150" name="last_name" color="black"></v-text-field>
                                </v-col>

                            </v-row>

                            <v-divider></v-divider>
                            <p class="mt-2">Profile Picture</p>
                            <v-row>
                                <v-col cols="12" sm="12" md="6">
                                    <input type="file" id="avatar" ref="avatar" v-on:change="fileUpload()"/>

                                </v-col>
                            </v-row>

                            <div class="right-align">
                                <v-btn color="yellow" class="black-text" @click="update()">Submit</v-btn>
                                <v-btn color="red accent-3" class="black-text">Back</v-btn>
                            </div>
                            <br>
                        </div>
                    </v-form>
                </v-card>
            </v-col>
        </v-row>
    </div>
</div>
</template>

<script>

export default {
    data() {
        return {
            //Data
            person: {
                first_name: '',
                last_name: '',
            },
            userAvatar: undefined,
            person_id: 1,

            }

        }
    },


    methods: {
        fileUpload(){
            this.userAvatar = this.$refs.avatar.files[0];
        },

        update() {
            let formData = new FormData();
            formData.append('first_name', this.person.first_name);
            formData.append('last_name', this.person.last_name);
            formData.append('profile_picture', this.userAvatar);
            formData.append('_method', 'PUT');

            axios.post(`/profile/${this.person_id}`, formData, {
                headers: {
                    'Content-Type': 'multipart/form-data'
                }
            })
                .then(res => {
                    console.log(res.data);
                }).catch(e => {
                    console.log(e);
                })

        },

        }

    }
}
</script>

Back-End Code

public function update(Request $request, $id)
    {
        //Person
        $person = Person::find($id);

        //Avatar
        $name = null;
        $image = null;

        if ($request->hasFile('profile_picture')){
            $file = $request->file('image');
            $name = $person->id();
            $file->move(public_path().'/img/uploads/avatars', $name);

            //Image
            $image = new Image();
            $image->path = $name;
            $image->save();
        }

        //Profile
        $person->first_name = $request->first_name;
        $person->last_name = $request->last_name;
        if ($image)
            $person->image_id = $image->id;
        $person->save();
    }

Мой импорт для Модели записан так use App\Models\User_Management\Person;

По некоторым причинам кажется, что он не распознает метод :: find ($ id), когда я загружаю изображение, но я не знаю почему, есть ли какое-то решение для этого? Я попытался зарегистрировать переменную $ request, и она выдает следующее

[2020-04-13 19:41:23] local.INFO: array (
  'first_name' => 'John',
  'last_name' => 'Smith',
  '_method' => 'PUT',
  'profile_picture' => 
  Illuminate\Http\UploadedFile::__set_state(array(
     'test' => false,
     'originalName' => 'kekas.jpg',
     'mimeType' => 'image/jpeg',
     'error' => 0,
     'hashName' => NULL,
  )),
)  

Не похоже, что что-то не так с внешним кодом, но я оставил это здесь на всякий случай, если он дает подсказку о эта странная ошибка.

1 Ответ

1 голос
/ 13 апреля 2020

Нет способа $person->id(); в Персоне. Вам нужно получить свойство, подобное этому: $person->id. Надеюсь, поможет. Вы ошиблись в этой строке кода: $name = $person->id();

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