Здравствуйте.
В 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 сообщение отображалось только если что то в данных изменено, а не каждый раз при нажатии кнопки обновить?