Сохранение картинки
В .env запишем:
APP_URL=http://laratest2.loc
Изменим config/filesystems.php . Запишем в [‘disks’][‘public’][‘root’] :
public_path('uploads')
Это значит, что картинки будут сохранятся в папку public/uploads, а не storage/app/public (storage_path(‘app/public’)), как было раньше.
И поменяем в нем же:
'default' => env('FILESYSTEM_DRIVER', 'public'),
В Models/Post.php запишем:
protected $fillable = ['title', 'description', 'content', 'category_id', 'thumbnail'];
Изменим метод store для сохранения данных:
public function store(Request $request) { $request->validate([ 'title' => 'required', 'description' => 'required', 'content' => 'required', 'category_id' => 'integer', // значит, что параметр обязательный и он должен быть integer 'thumbnail' => 'nullable|image', // значит, что параметр не обязательный, но это должна быть картинка ]); $data = $request->all(); // сохраняем изображение if ($request->hasFile('thumbnail')) { $folder = date('Y-m-d'); $data['thumbnail'] = $request->file('thumbnail')->store("images/{$folder}"); } $post = Post::create($data); /* * используем https://laravel.com/docs/8.x/eloquent-relationships#syncing-associations * для вставки уникальных связи в post_tag таблицу */ $post->tags()->sync($data['tags']); return redirect()->route('posts.index')->with('success', 'Статья добавлена!'); }