10. Управление постами. Часть 2

Сохранение картинки

В .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', 'Статья добавлена!');
}

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x