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);
}