Weave 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

Arxis Datatables Bundle Laravel Package

renearias/arxis-datatables-bundle

A Laravel/PHP DataTables bundle for building sortable, searchable, paginated tables with server-side processing, query helpers, and Blade-friendly integration. It reduces repetitive boilerplate for admin, reporting, and data-heavy interfaces while keeping table logic maintainable.

View on GitHub
Deep Wiki
Context7

Getting Started

Treat this as a Symfony bundle, not a Laravel package. The release notes describe ArxisDatatablesBundle forked from sg/datatablesbundle; there is no Laravel service provider, facade, Blade integration, or Eloquent adapter mentioned.

First steps:

  • In a Symfony app, install via Composer using the fork’s package metadata, then register/configure the bundle per Resources/doc/index.md.
  • Start with Resources/doc/index.md and Resources/doc/example.md; the notes point to separate docs for master and v0.6.1.
  • Pin a version deliberately: the notes list v0.6.1 as recommended, while master/v0.7 carries the new features.
  • First practical use case: build a DataTable class, define columns in the column builder, expose it through an AJAX route, and render it with DataTables in a Symfony template.

Minimal custom-column usage from the release notes:

$this->columnBuilder
    ->add("title", new CustomColumn(), [
        "example_string_option" => "title",
        "example_boolean_option" => false,
    ]);

Implementation Patterns

  • Declarative DataTable classes: keep column definitions in the bundle’s columnBuilder rather than hand-writing DataTables JavaScript. This is the main day-to-day workflow: add columns, configure options, and let the bundle generate the client-side configuration.
  • Custom column types: v0.7/master supports passing a custom column type instance directly into add(). Use this for reusable rendering/filtering behavior such as status badges, links, or domain-specific formatting.
  • Multiselect bulk actions: use the new multiselect column for bulk delete/disable workflows. Define start_html, end_html, attributes, and actions; each action maps to a route and optional role.
$this->getColumnBuilder()
    ->add(null, "multiselect", [
        "start_html" => '<div class="wrapper" id="testwrapper">',
        "end_html" => '</div>',
        "attributes" => [
            "class" => "testclass",
            "name" => "testname",
        ],
        "actions" => [
            [
                "route" => "post_bulk_delete",
                "label" => "Delete",
                "role" => "ROLE_ADMIN",
            ],
            [
                "route" => "post_bulk_disable",
                "label" => "Disable",
            ],
        ],
    ]);
  • Row details: the master line adds row-details support. Use it for expandable rows where secondary data should not consume table columns, but verify the feature against the exact pinned version.
  • Keep authorization server-side: the multiselect role option is useful for UI affordance, but bulk action routes must independently validate permissions and selected IDs.
  • Version-aware integration: if production stability matters, target v0.6.1 and only adopt master/v0.7 features after testing. Keep docs version aligned with the installed code.
  • Laravel-only stacks: if the application is Laravel-only, do not force this bundle in. Use a Laravel-native DataTables package unless you are already operating a Symfony bundle layer or bridging Symfony components intentionally.

Gotchas and Tips

  • Not a Laravel package: no php artisan commands, auto-discovery, Laravel config publishing, Blade directives, or Eloquent query builder are documented. Expect Symfony bundle registration and configuration.
  • Docs/version mismatch risk: the notes separate master docs from v0.6.1 docs, while calling v0.6.1 recommended. A feature shown in the release notes may be master-only or unstable.
  • Custom column options are opaque: options are passed to the custom column type; mismatched option names or types may fail at render/config time rather than at definition time. Validate custom column classes with representative data.
  • Multiselect HTML is raw: start_html and end_html are injected markup. Avoid untrusted/user-controlled values and confirm escaping behavior in your templates.
  • Bulk endpoints need validation: selected IDs, CSRF/auth strategy, and route existence are your responsibility. Do not rely on the optional role field as an authorization boundary.
  • Debugging generated JavaScript: when table behavior is wrong, inspect the generated DataTables configuration and AJAX response format first; the bundle is largely a server-side column/config generator.
  • Extension point: the primary extension path is a custom column type instance passed into the column builder. Keep custom types small and reusable, and test them against the pinned bundle version.
  • License note: MIT license, but keep the copyright header intact as requested in the release notes.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource