PHPackages                             fantomx1/datatables - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. fantomx1/datatables

ActiveLibrary

fantomx1/datatables
===================

package under development

0.999(5y ago)08[2 issues](https://github.com/FantomX1/datatables/issues)PHP

Since Jul 15Pushed 5y ago1 watchersCompare

[ Source](https://github.com/FantomX1/datatables)[ Packagist](https://packagist.org/packages/fantomx1/datatables)[ RSS](/packages/fantomx1-datatables/feed)WikiDiscussions master Synced today

READMEChangelog (3)Dependencies (7)Versions (5)Used By (0)

datatables
==========

[](#datatables)

generic framework-agnostic composer installable data-tables

After installing this library via `composer install fantomx1/datatables `, install the library's assets as follows (it utilizes package fantomx1/packages-assets-support for the operation)

### Installing this library's assets

[](#installing-this-librarys-assets)

execute this command

```
cd vendor/fantomx1/datatables && php ../../../vendor/fantomx1/packagesAssetsSupport/initAssets.php -w=../../../backend/web -o=assets

```

where the **-w option** stands for the relative path to the documentRoot/webDir directory, where to position the assets (Note: later can be added functionality of the command asking interactively for the documentRoot location, plus hooking up on composer post-install )

Example:
--------

[](#example)

[![Showcase](datatablesExample.gif)](datatablesExample.gif)

Usage:
------

[](#usage)

(with columnsDefinitions builder) - really nothing else anymore, and the table is fully functional sortable, filterable

```

        $articleTableWidget = new DataTableWidget();

        // will be needed also at column
        $articleTableWidget->_assoc_ini->setIni(
            $articleTableWidget->_assoc_ini::INI_QUERY_EXECUTOR,
            YiiQueryExecutorPlugin::class
        );

        $articleTableWidget->init();

        $articleTableWidget->setQuery("
            SELECT
                a.*
                ac.title as category_id,
            FROM article a
            JOIN article_category ac ON a.category_id = ac.id
        ");

        $articleTableWidget->setColumnsDefinition(
            [
                $articleTableWidget->column('category_id')
                    ->setFilter()
                        ->setTypeSelect()
                        ->setDataQuery(
                            "article_category",
                            "id",
                            "title"
                        )->getFilter()
                    ->setCaption('Category')
                    ->setOrderable(),
                $articleTableWidget->column('slug')
                    ->setFilter()
                        ->setTypeSelect()
                        ->setData(
                            [
                                '1'=>'aaa',
                                '2'=>'bbb',
                                '3'=>'ccc'
                            ]
                        )->getFilter()
                    //->setCaption('aaa')
                    ->setOrderable(),
                $articleTableWidget->column('id')
                    ->setFilter()
                        ->setTypeText()
//                        ->setData(
//                            [
//                                '1'=>'aaa',
//                                '2'=>'bbb',
//                                '3'=>'cccc'
//                            ])
                        ->getFilter()
                    //->setCaption('bbb')
                    ->setOrderable()
            ]
        );

        // perhaps passed to some view
        $articleTableWidget->run();

```

**Roadmap:**

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 94.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~24 days

Total

3

Last Release

2130d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/dd900d8c5f118562510421f30c9d9c73453682c7707f372c086f87270bb213bd?d=identicon)[FantomX1](/maintainers/FantomX1)

---

Top Contributors

[![FantomX1-github](https://avatars.githubusercontent.com/u/10033290?v=4)](https://github.com/FantomX1-github "FantomX1-github (55 commits)")[![frantisekhallo](https://avatars.githubusercontent.com/u/43687953?v=4)](https://github.com/frantisekhallo "frantisekhallo (3 commits)")

### Embed Badge

![Health badge](/badges/fantomx1-datatables/health.svg)

```
[![Health](https://phpackages.com/badges/fantomx1-datatables/health.svg)](https://phpackages.com/packages/fantomx1-datatables)
```

###  Alternatives

[jason-munro/cypht

Lightweight Open Source webmail written in PHP and JavaScript

1.6k157.9k](/packages/jason-munro-cypht)[symfony/symfony-demo

Symfony Demo Application

2.6k254.2k](/packages/symfony-symfony-demo)[mapbender/mapbender

Mapbender library

10418.0k8](/packages/mapbender-mapbender)[bacula-web/bacula-web

The open source web based reporting and monitoring tool for Bacula

1557.6k](/packages/bacula-web-bacula-web)[eveseat/web

SeAT Web Interface

2623.5k156](/packages/eveseat-web)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
