Освоение Laravel Nova: экспорт данных в Excel с примерами кода

Laravel Nova — это мощная панель администрирования для приложений Laravel, предоставляющая удобный интерфейс для управления ресурсами. Одним из распространенных требований к веб-приложениям является возможность экспорта данных в Excel, позволяющая пользователям загружать данные в формате электронных таблиц. В этой статье блога мы рассмотрим различные методы экспорта данных в Excel с помощью Laravel Nova, сопровождаемые примерами кода.

Метод 1: использование пакета Laravel Excel
Laravel Excel — популярный пакет, который упрощает процесс экспорта данных в Excel. Вот как вы можете использовать его с Laravel Nova:

  1. Установить пакет Laravel Excel:

    composer require maatwebsite/excel
  2. Создайте действие Nova для обработки экспорта:

    namespace App\Nova\Actions;
    use Maatwebsite\Excel\Concerns\FromQuery;
    use Maatwebsite\Excel\Concerns\Exportable;
    use Laravel\Nova\Actions\Action;
    use Laravel\Nova\Fields\ActionFields;
    class ExportToExcel extends Action implements FromQuery
    {
    use Exportable;
    public function query()
    {
        // Define the query to fetch data for export
        return YourModel::query();
    }
    public function handle(ActionFields $fields)
    {
        return $this->download('export.xlsx');
    }
    }
  3. Зарегистрируйте действие Nova:

    use App\Nova\Actions\ExportToExcel;
    public function actions(Request $request)
    {
    return [
        new ExportToExcel,
    ];
    }

Метод 2: использование встроенной функции экспорта в Excel в Laravel
Laravel предоставляет встроенную функцию экспорта в Excel, которую также можно использовать в Laravel Nova. Вот пример:

  1. Создайте действие Nova для обработки экспорта:

    namespace App\Nova\Actions;
    use Laravel\Nova\Actions\Action;
    use Laravel\Nova\Fields\ActionFields;
    use Maatwebsite\Excel\Facades\Excel;
    class ExportToExcel extends Action
    {
    public function handle(ActionFields $fields)
    {
        return Excel::download(new YourExport, 'export.xlsx');
    }
    }
  2. Создайте класс экспорта:

    namespace App\Exports;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use App\Models\YourModel;
    class YourExport implements FromCollection
    {
    public function collection()
    {
        return YourModel::all();
    }
    }
  3. Зарегистрируйте действие Nova:

    use App\Nova\Actions\ExportToExcel;
    public function actions(Request $request)
    {
    return [
        new ExportToExcel,
    ];
    }

Метод 3: использование инструмента экспорта Laravel Nova
Laravel Nova предоставляет встроенный инструмент экспорта, который позволяет пользователям экспортировать ресурсы в различные форматы, включая Excel. Вот как его использовать:

  1. Определите экспортируемые поля в классе ресурсов Nova:

    use Laravel\Nova\Fields\Text;
    use Laravel\Nova\Fields\Number;
    use Laravel\Nova\Fields\DateTime;
    use Laravel\Nova\Fields\Boolean;
    public function fields(Request $request)
    {
    return [
        Text::make('Name'),
        Number::make('Age'),
        DateTime::make('Created At'),
        Boolean::make('Active'),
    ];
    }
  2. Добавьте признак WithExcelв свой класс ресурсов Nova:

    use Laravel\Nova\Actions\Action;
    use Laravel\Nova\Fields\ActionFields;
    use Laravel\Nova\WithExcel;
    class YourResource extends Resource
    {
    use WithExcel;
    // ...
    }
  3. Кнопка экспорта автоматически появится на индексной странице вашего ресурса, что позволит пользователям экспортировать данные в Excel.

Экспорт данных в Excel — обычное требование в веб-приложениях, и Laravel Nova предлагает несколько способов добиться этого. В этой статье мы рассмотрели три различных подхода, в том числе использование пакета Laravel Excel, использование встроенной функции экспорта Excel в Laravel и использование инструмента экспорта Nova. Каждый метод имеет свои преимущества, и вы можете выбрать тот, который лучше всего соответствует требованиям вашего проекта.

Мы надеемся, что эта статья, предоставляя примеры кода и пошаговые инструкции, помогла вам овладеть искусством экспорта данных в Excel с помощью Laravel Nova.