Задать вопрос
@Uglik

Как вывести аватарку из Storage laravel?

Здравствуйте.

В Profile Controller при обновлении профиля записываю аватарку в Storeg:

/**
     * Update user profile
     *
     * @param \App\User $user
     * @param \App\Http\Requests\ProfileUserUpdateRequest $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function update(User $user, UserUpdate $request)
    {

        if($request->hasFile('avatar'))
        {
            
            // Get user avatar image request
            $image = $request->file('avatar');
            $extension = $image->getClientOriginalExtension();

            // Resize image user avatar
            $size = \Config::get('image.avatar_size');
            $avatar = Image::make($image)->fit($size)->encode($extension);

            // Save user avatar image
            $path = $user->username . '/avatar.' . $extension;
            Storage::disk('users')->put($path, $avatar);
            
        }

        $user->update($request->all());
        return redirect()->route('profile.edit', $request['username']);
    }


Из формы приходит данные и проверяются на валидность.
Из запроса получаем файл изображения и даелам ресайз.

Стоит ли вообще хранить какие то данные в базе или можно просто обойтись без этого ?

Как теперь данное изображения вывести в профиле пользователя? По логике путь формируется по данным username.

Варианты:
- в моделе написать функцию в которую будет передаваться username и возвращать response storage
- можно как то реализовать через controller
- создать отдельный Route под это дело

Как будет правильнее ?? И как вообще структурировать данные код. У нас есть 3 сущности: путь до изображения, записать изображение, получить изображение. Что бы в будущем обращаться к каждой сущности по отдельности из проложения. Но как тогда в данном случае получать правильное расширение изображения и везде передавать username?

P.S. И еще вопрос, как реализовать что бы flash сообщение отображалось только если что то в данных изменено, а не каждый раз при нажатии кнопки обновить?
  • Вопрос задан
  • 1467 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
DJZT
@DJZT
Laravel - code for you
Про flash - делай проверку на изменения. И если что-то поменялось - то делай redirect()->with('success', '...')

Есть метод у модели getOriginal

Попробуй его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы