Да это время уже сделал. Разобрался. Файл я получаю и записываю Storage. Присваиваю ему новое имя и путь. Так вот теперь мне этот новый путь нужно положить в базу. Вопрос в том как это сделать. Получаю request и делаю $user->update($request->all()). И в базу записываться путь к временной папке, а не мой новый. Пробую $request[file] = $new_path;
Григорий: потому что в $request->file содержится временный путь к файлу и он записывается в базу данных. А мне нужно записать свой. Потому что сохраняю файл к себе в папку users и нужно путь и название файла именно к этой папке записать в базу.
Станислав Почепко: а где вы храните контент пользовательские изображения? Это мой первый проект поделитесь опытом пожалуйста. В моей логике тогда стал вопрос с тем что, если пользователь редактирует username нужно переименовать папку, но на сайте laravel я нашел только Storage::makeDirectory($directory); и Storage::deleteDirectory($directory);
Станислав Почепко: а если поменяются пути хранения данных, что тогда делать ? все запросы в базе переписывать ?
Мне кажется что храниться название еще можно но вот архитектуру лучше хранить отдельной функцией что бы всегда переписать можно было.
Но в моем случае все аватарки называются одинаково avatar только расширение по каждому файлу дописываем. Структура такая storage/users/username/avatar.jpg и меняется только название папки username. На сколько правильно так делать ? или лучше все аватарки хранить в одной папке например avatars и индифицировать каждую.
Andrzej Wielski: а как быть если в storage image хранится в разных расширениях? как получить правильно изображения используя $avatar = Storage::disk('users')->get($path);
Станислав Почепко: ну вот и пишу в модели тоже самое и он у меня не получает данные эти
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* var array
*/
protected $fillable = [
'username',
'email',
'password',
'first_name',
'last_name',
'avatar',
'user_group'
];
/**
* The attributes excluded from the model's JSON form.
*
* var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* Get the route key for the model.
* Change the data retrieval from the database through the username.
*
* return string
*/
public function getRouteKeyName()
{
return 'username';
}
public function getUserName()
{
return $this->username;
}
Суть в том что на всех страницах профиля нужно выводить информацию пользователя. Имя фамилия и аву. Архитектура роута описана выше. Что бы на каждую страну через контролёр не отправлять данные пользовател.
Я делаю композ части шаблона, но он все равно не выводит данные потому что говорит что не передан параметр username, как передать данный параметр? Если можно на примере.
Просто ссылки выглядят так
user/{username}
user/{username}/edit
user/{username}/activity
user/{username}/other
И все они содержат параметр username, который я не могу понять как передать массово
а если поддерживаются несколько форматов ? например png, jpg и gif?
Подскажи пожалуйста а как ограничить на загрузку определенные расширения изображений ?