Копирование файлов из папки в Laravel - PullRequest
0 голосов
/ 05 апреля 2019

Я занимаюсь разработкой CMS с laravel на работе, в случае, если я публикую страницы сайта бренда, мне нужно создать структуру папок перед публикацией.

Если у меня есть app / themes / default / public Я хочу скопировать файлы из папки public и отправить их в эту папку, которая будет создана app / websites-published / '. $ content-> nanoid.

Как бы я это сделал?

    public function publish(Request $request, Site $site)
    {
        /** @var  $contents */
        $contents = $site->contents;

        /** @var  $content */
        foreach ($contents as $content) {

            // Copiar o Public do THEME - THEME/NOME DO TEMA/PUBLIC - WebsitePublished->Nanoid
            // Conteudo do ex: THEME/PUBLIC
            $copyTheme = storage_path('app/themes/default/public');
            $sendTheme = public_path('app/websites-published/' . $content->nanoid);
            copy($copyTheme, $sendTheme);


            // Copiar o Public do WEBSITE - WebsitePublished->Site:Nanoid
            // Conteudo do ex: WEBSITE/SUZUKI/PUBLIC


            // APP/WEBPUBLISHED
        }

        return $this->viewService->renderContent($request, $content);
    }

1 Ответ

1 голос
/ 07 апреля 2019

Laravel имеет файловую систему, которая может обрабатывать операции с файлами в большинстве систем. Класс Storage фасад может копировать только отдельный файл, поэтому вам нужно будет легко зацикливаться на всех них, но это слишком большая работа, поскольку класс Filesystem может рекурсивно копировать или перемещать весь каталог при рекурсивном создании каталогов.

Чтобы переместить весь каталог, вы должны выполнить импорт класса Fileystem:

use Illuminate\Filesystem\Filesystem;

И используйте метод copyDirectory():

public function publish(Request $request, Site $site)
{
    /** @var  $contents */
    $contents = $site->contents;

    /** @var  $content */
    foreach ($contents as $content) {

        // Copiar o Public do THEME - THEME/NOME DO TEMA/PUBLIC - WebsitePublished->Nanoid
        // Conteudo do ex: THEME/PUBLIC
        $copyTheme = storage_path('app/themes/default/public');
        $sendTheme = public_path('app/websites-published/' . $content->nanoid);
        $filesys = new Filesystem();
        $filesys->moveDirectory($copyTheme, $sendTheme);


        // Copiar o Public do WEBSITE - WebsitePublished->Site:Nanoid
        // Conteudo do ex: WEBSITE/SUZUKI/PUBLIC


        // APP/WEBPUBLISHED
    }

    return $this->viewService->renderContent($request, $content);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...