Загрузка файлов в указанные папки c в зависимости от их моделей с помощью Laravel (5.5) Media Library - PullRequest
0 голосов
/ 02 апреля 2020

Я хотел бы загрузить файлы в указанную папку c в соответствии с их моделями, используя, например, библиотеку мультимедиа Laravel (5.5): у меня есть модель урока, связанная с моделью курса (урок относится к курсу ), который успешно загружает все файлы в «хранилище / приложение / общедоступные / уроки» с помощью библиотеки мультимедиа, но теперь я хотел бы загрузить эти файлы в нечто вроде «хранилище / приложение / общедоступное / {course_slug} / {lesson_slug} / {file» }». Как я могу выполнить sh это?

До сих пор я пытался настроить CustomPathGenerator для проверки того, является ли $ media экземпляром урока, а затем получить слаг курса и слаг урока, но я не думаю, что это работает так.

Это то, что работает до сих пор.

<?php

namespace App\Handlers;

use App\Lesson;
use Spatie\MediaLibrary\Media;
use Spatie\MediaLibrary\PathGenerator\PathGenerator;

class CustomPathGenerator implements PathGenerator
{
    public function getPath(Media $media) : string
    {
        return 'lessons/' . $media->id;
    }

    public function getPathForConversions(Media $media) : string
    {
        return $this->getPath($media) . 'conversions/';
    }

    public function getPathForResponsiveImages(Media $media): string
    {
        return $this->getPath($media) . 'responsive/';
    }
}

в моей модели урока, я только говорю, чтобы загрузить

.....

public function setDocumentsAttribute($input){

  foreach ($input as $file) {
     $this->addMedia(storage_path('tmp/uploads/' . $file))->toMediaCollection('documents');
  }

}

.....
...