Метод download
Метод download класса Component используется для скачивания файлов из компонента Livewire.
В первый параметр передаётся путь к файлу, во второй (опционально) - имя файла для скачивания.
Метод возвращает экземпляр SymfonyComponentHttpFoundationBinaryFileResponse.
При вызове этого метода браузер пользователя получает файл для скачивания.
Синтаксис
<?php
class Component
{
public function download($path, $name = null)
{
// скачивание файла
}
}
?>
Пример
Давайте создадим компонент, который скачивает файл по клику на кнопку:
<?php
namespace AppLivewire;
use LivewireComponent;
class FileDownloader extends Component
{
public function downloadFile()
{
$path = storage_path('app/public/document.pdf');
return $this->download($path, 'my_document.pdf');
}
public function render()
{
return view('livewire.file-downloader');
}
}
?>
<div>
<button wire:click="downloadFile">
Download PDF
</button>
</div>
Результат выполнения кода:
<button>
Download PDF
</button>
После клика на кнопку браузер начинает скачивание файла 'my_document.pdf'.
Пример
Скачаем файл из публичной директории public:
<?php
namespace AppLivewire;
use LivewireComponent;
class ImageDownloader extends Component
{
public function downloadImage()
{
$path = public_path('images/photo.jpg');
return $this->download($path, 'vacation_photo.jpg');
}
public function render()
{
return view('livewire.image-downloader');
}
}
?>
<div>
<button wire:click="downloadImage">
Download Image
</button>
</div>
Результат выполнения кода:
<button>
Download Image
</button>
При нажатии на кнопку скачивается файл 'vacation_photo.jpg' из папки public/images.
Пример
Создадим динамическое имя для скачиваемого файла с текущей датой:
<?php
namespace AppLivewire;
use LivewireComponent;
class ReportDownloader extends Component
{
public function downloadReport()
{
$path = storage_path('app/reports/monthly.csv');
$filename = 'report_' . date('Y-m-d') . '.csv';
return $this->download($path, $filename);
}
public function render()
{
return view('livewire.report-downloader');
}
}
?>
<div>
<button wire:click="downloadReport">
Download Report
</button>
</div>
Результат выполнения кода:
<button>
Download Report
</button>
Файл скачивается с именем, содержащим текущую дату, например 'report_2026-09-08.csv'.
Смотрите также
-
метод
redirect,
который выполняет редирект на указанный URL -
метод
render,
который возвращает шаблон компонента -
класс
Component,
базовый класс для всех Livewire-компонентов -
свойство
public-prop,
которое определяет публичные свойства компонента