Проблемы с полем загрузки файла изображения Laravel Spark - PullRequest
0 голосов
/ 02 ноября 2018

Я мигрирую в Laravel Spark. На странице настроек профиля я пытаюсь добавить поле загрузки изображения. Поскольку профили используют VueJS, я не уверен, как к этому подойти. Я следовал документам, чтобы добавить обычные текстовые поля, но не могу заставить загружаться файлы изображений.

Форма лезвия

<!-- confirm_splash - Image File -->
<div class="form-group row justify-content-center">
    <div class="col-md-6 d-flex align-items-center">
        <div class="image-placeholder mr-4">
            <span role="img" class="profile-photo-preview" :style="previewStyle"></span>
        </div>
        <div class="spark-uploader mr-4">
            <input ref="confirm_splash" type="file" class="spark-uploader-control" name="confirm_splash"  :disabled="form.busy">
            <div class="btn btn-outline-dark">{{__('Update Photo')}}</div>
        </div>
        <span class="invalid-feedback" v-show="form.errors.has('confirm_splash')">
            @{{ form.errors.get('confirm_splash') }}
        </span>
    </div>
</div>

Обновление сведений о профиле - компонент VueJS Не уверен, если мне нужно добавить функцию внутри методов, чтобы получить файл изображения.

Vue.component('update-profile-details', {
    props: ['user'],

    data() {
        return {
            form: new SparkForm({
                business_name: '',
                confirm_splash: ''
            })
        };
    },

    mounted() {
        this.form.confirm_splash = this.user.confirm_splash;
    },

    methods: {
        update() {
            Spark.put('/settings', this.form)
                .then(response => {
                    Bus.$emit('updateUser');
                });
        }
    }
});

Сведения о профиле Контроллер Первоначально это работало без VueJS при отправке формы. Я использую идентификатор автора, чтобы добавить загруженное изображение в управляемый каталог.

public function update(Request $request)
{
    $this->validate($request, [
        'business_name' => 'required|min:1',
    ]);

    //Get the current user ID
    $data['id'] = Auth::user()->id;
    $authorID = $data['id'];
    $file = request()->file('confirm_splash');

    if($file) {
    $fileExtension = $file->extension();
    $unique_name = md5($file. time()).'.'.$fileExtension;

    $fileImg = $file->storeAs('/public/profile/' . $authorID, $unique_name);
    $filePub = '/profile/'. $authorID."/".$unique_name;

    };

    if(!$file) {
      $filePub = '';
    }

    $request->user()->forceFill([
        'business_name' => $request->business_name,
        'confirm_splash' => $filePub,
    ])->save();
}
...