Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Laravel Datatables Buttons

Laravel Datatables Buttons Laravel Package

yajra/laravel-datatables-buttons

Laravel DataTables Buttons plugin for server-side exports and printing. Adds CSV/Excel/PDF generation and print support for jQuery DataTables Buttons extension, integrated with yajra/laravel-datatables on modern Laravel and PHP versions.

View on GitHub
Deep Wiki
Context7

Laravel DataTables Buttons Plugin

Frequently asked questions about Laravel Datatables Buttons
How do I add export buttons (CSV/Excel/PDF) to an existing Laravel DataTables implementation?
Use the `exportButtons()` method in your DataTables query builder. For example, add `->exportButtons()->make(true)` to your table definition in Blade. The package auto-generates the necessary routes and handles server-side processing. Ensure you’ve published the config with `php artisan vendor:publish --tag=datatables-buttons` if you need customization.
What Laravel and PHP versions does yajra/laravel-datatables-buttons support?
The latest version (v13.x) requires **Laravel 12+** and **PHP 8.3+**. Older versions support Laravel 8–13 via separate branches (e.g., v4.x for Laravel 8.x). Check the [compatibility table](https://github.com/yajra/laravel-datatables-buttons#laravel-version-compatibility) for specifics. Always use versioned `composer require` (e.g., `^13` for Laravel 12/13).
Can I customize the exported Excel/PDF files (e.g., add headers, logos, or multi-sheet support)?
Yes, use the `exportRender()` method or column macros to customize content. For advanced Excel features (e.g., multi-sheets), extend the `DataTables` base class or override the `exportRender` callback. PDFs support Laravel’s `dompdf` or `barryvdh/laravel-dompdf` for branding. Example: `->exportButtons(['exportOptions' => ['modifiers' => ['customHeader']]])`.
Will this work with Livewire or Laravel Octane? Are there performance issues for large datasets?
The package is compatible with Livewire/Octane but may require adjustments for real-time exports. For large datasets (100K+ rows), use Laravel’s `chunk()` or queue exports via `dispatch()` to avoid timeouts. Example: `DataTables::of($model)->chunk(1000)->exportButtons()`. Test with `php artisan queue:work` in production to ensure smooth processing.
Do I need to install jQuery DataTables Buttons separately, or does this package include it?
No, this package **does not bundle** the jQuery DataTables Buttons extension. You must include it manually via CDN or npm (e.g., `datatables.net-buttons`). Publish the package’s assets with `php artisan vendor:publish --tag=datatables-buttons` to get the default JS/CSS, but the client-side library is a hard dependency. Check the [README](https://github.com/yajra/laravel-datatables-buttons) for integration steps.
How do I restrict export access (e.g., only admins can export sensitive data)?
Use Laravel’s built-in middleware or gates to protect export routes. The package generates routes like `/datatables/buttons/export`, which you can wrap in `Route::middleware(['auth', 'admin'])` or attach policies. Example: `Route::group(['middleware' => 'can:export-data'], function () { ... });`. Combine with `authorize()` in controllers for granular control.
What’s the difference between `exportButtons()` and manually handling exports with Laravel Excel?
This package provides **server-side, integrated exports** tied to DataTables’ UI buttons (CSV/Excel/PDF/print), while Laravel Excel requires manual route setup and form handling. The Buttons plugin handles pagination, column mapping, and client-side triggers automatically. For complex exports (e.g., multi-sheet Excel), you can still use Laravel Excel under the hood via `exportRender()` callbacks.
Can I use this with Vue/React instead of jQuery DataTables?
The package is designed for **jQuery DataTables Buttons** but can work with modern SPAs via AJAX endpoints. For Vue/React, use the DataTables server-side processing API to fetch data, then trigger exports via custom buttons. Example: Call `/datatables/buttons/export` from your frontend. Avoid publishing the package’s assets if using a CDN for DataTables Buttons.
How do I debug issues like blank exports or 500 errors?
Check Laravel logs (`storage/logs/laravel.log`) for server-side errors. For blank exports, verify column names match your model/DB schema. Enable debug mode (`config('datatables-buttons.debug' => true)`) to log export requests. Test with a minimal example: `DataTables::of(User::query())->exportButtons()->make(true)`. If using custom formats, validate your `exportRender` logic.
Are there alternatives to this package for Laravel DataTables exports?
For lightweight needs, consider `maatwebsite/excel` with custom routes or `spatie/laravel-dataexport`. However, this package is the **most integrated** solution for DataTables, offering seamless UI buttons, server-side processing, and Laravel-native features. Alternatives lack built-in pagination/column mapping or require manual frontend-backend sync. For Octane/Livewire, evaluate `beberlei/laravel-dataexport` as a hybrid option.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony