PHPackages                             n2ref/coreui-table - 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. [Framework](/categories/framework)
4. /
5. n2ref/coreui-table

ActiveFramework[Framework](/categories/framework)

n2ref/coreui-table
==================

PHP framework for web applications

1.0.9(1y ago)078GPL-3.0-or-laterPHPPHP &gt;=8.0.0

Since Oct 27Pushed 1y ago1 watchersCompare

[ Source](https://github.com/n2ref/coreui-table-php)[ Packagist](https://packagist.org/packages/n2ref/coreui-table)[ Docs](https://github.com/n2ref/coreui-table)[ RSS](/packages/n2ref-coreui-table/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (2)Used By (0)

coreui-table
============

[](#coreui-table)

```
    use CoreUI\Table;

    $table = new Table('users');
    $table->setClass('table-hover table-striped');
    $table->setPrimaryKey('id');
    $table->setMaxWidth(400);
    $table->setRecordsPerPage(25);
    $table->setClickUrl('/users//[id]');

    $table->addHeaderOut()
        ->left([
            (new Table\Control\Link("Добавить", "/users/0"))->addAttr('class', 'btn btn-success'),
            (new Table\Control\Buttun("Удаление"))->addAttr('class', 'btn btn-warning')->setOnClick('funcDelete()'),
        ])
        ->right([
            (new Table\Filter\Text('login_name', "Логин или Email", 150))->setLabel('Label'),
            (new Table\Control\FilterClear(),
        ]);

    $table->addHeaderIn()
        ->left([
            (new Table\Control\Search()),
            (new Table\Control\Columns()),
        ]);

    $table->addFooterOut()
        ->left([
            (new Table\Control\Pages(3)),
        ])
        ->right([
            (new Table\Control\PageJump()),
            (new Table\Control\PageSize([ 25, 50, 100, 1000, 0 ])),
        ]);

    $table->addSearch([
        (new Table\Search\Text('email',          "Email"))->setDescription('Описание'),
        (new Table\Search\Switch('is_active_sw', "Активность"))->setValueY(1),
        (new Table\Search\Date('date_created',   "Дата использования"))
    ]);

    $table->addColumns([
        (new Table\Column\Select());
        (new Table\Column\Text('login',          "Логин",         110)))->setDescription('Описание')->setSort(true),
        (new Table\Column\Text('name',           "Имя"))->setSort(true),
        (new Table\Column\Text('email',          "Email",         80))->setAttr('class', 'text-left')
        (new Table\Column\Date('date_created',   "Дата создания", 110))->setFormat('DD.MM.YYYY')->setSort(true);
        (new Table\Column\Switch('is_active_sw', "Активность",    50))->setValueY(1)->setValueN(0);
    ]);

    $table->setRecordsRequest('data/users.json', 'GET');

    // OR

    $table->setRecords([
        [ 'id' => 1, 'login' => 'admin', 'name' => 'Administrator', 'email' => 'admin@gmail.com', 'date_created' => date('Y-m-d'), 'is_active_sw' => 'Y' ],
        [ 'id' => 2, 'login' => 'user1', 'name' => 'User 1',        'email' => 'user1@gmail.com', 'date_created' => date('Y-m-d'), 'is_active_sw' => 'Y' ],
        [ 'id' => 3, 'login' => 'user2', 'name' => 'User 2',        'email' => 'user2@gmail.com', 'date_created' => date('Y-m-d'), 'is_active_sw' => 'N' ],
    ]);

    $records = $table->getRecords();
    foreach ($records as $record) {

        $record->name = "{$record->last_name} {$record->first_name}";
        $record->cell('name')->setAttr('class', 'fw-bold');

        if ($record->login === 'admin') {
            $record->setAttr('class', 'table-warning');
        }
    }

    echo $table->toArray();
```

result

```
```

```
    use CoreUI\Table;
    use CoreUI\Table\Adapter\Mysql\Search;

    $table = new Table\Adapter\Mysql();
    $table->setConnection($db);
    $table->setCalcCount($table::CALC_ALL);
    $table->setPage($_GET['page'] ?? 1, $_GET['count'] ?? 25);

    // OR

    if ( ! empty($_GET['page'])) {
        $table->setPage($_GET['page']);
    }

    if ( ! empty($_GET['count'])) {
        $table->setPageCount($_GET['count']);
    }

    if ( ! empty($_GET['sort']) && is_array($_GET['sort'])) {
        $table->setSort($_GET['sort'], [
            'login'        => 'u.login',
            'name'         => 'u.name',
            'date_created' => 'u.date_created',
        ]);
    }

    if ( ! empty($_GET['search']) && is_array($_GET['search'])) {
        $table->setSearch($_GET['search'], [
            'email'        => (new Search\Like())->setField("u.email"),
            'date_created' => (new Search\Between())->setField("u.date_created >= :start"),
            'is_active_sw' => (new Search\Equal())->setField("u.is_active_sw"),
            'role'         => (new Search\In())->setField("u.role"),
            'login_name'   => (new Search\Custom())->setField("(u.login LIKE %?% OR CONCAT_WS(' ', u.first_name, u.last_name) LIKE %?%)");
        ]);
    }

    $table->setQuery("
        SELECT u.id,
               u.login,
               u.first_name,
               u.last_name,
               u.email,
               u.date_create,
               u.is_active_sw
        FROM users AS u
        WHERE id_deleted = ?
    ", [
        'N'
    ]);

    $records = $table->fetchRows();
    foreach ($records as $record) {

        $record->name = "{$record->last_name} {$record->first_name}";
        $record->cell('name')->setAttr('class', 'fw-bold');

        if ($record->login === 'admin') {
            $record->setAttr('class', 'table-warning');
        }
    }

    return $table->toArray();
```

```
    use CoreUI\Table;
    use CoreUI\Table\Adapter\Data\Search;

    $table = new Table\Adapter\Data();

    $table->setPage($_GET['page'] ?? 1, $_GET['count'] ?? 25);

    if ( ! empty($_GET['count'])) {
        $table->setPageCount($_GET['count']);
    }

    if ( ! empty($_GET['sort']) && is_array($_GET['sort'])) {
        $table->setSort($_GET['sort'], [ 'login', 'name', 'date_created' ]);
    }

    if ( ! empty($_GET['search']) && is_array($_GET['search'])) {
        $table->setSearch($_GET['search'], [
            'email'        => new Search\Text(),
            'date_created' => new Search\Date(),
            'is_active_sw' => new Search\Equal(),
            'login_name'   => new Search\In();
        ]);
    }

    $table->setData([
        [ 'id' => 1, 'login' => 'admin', 'email' => 'admin@mail.com', 'name' => 'Administrator', 'is_active_sw' => 'Y', 'date_created' => date('Y-m-01 H:i:s'), ]
        [ 'id' => 2, 'login' => 'user1', 'email' => 'user1@mail.com', 'name' => 'User 1',        'is_active_sw' => 'Y', 'date_created' => date('Y-m-01 H:i:s'), ]
        [ 'id' => 3, 'login' => 'user2', 'email' => 'user2@mail.com', 'name' => 'User 2',        'is_active_sw' => 'N', 'date_created' => date('Y-m-01 H:i:s'), ]
        [ 'id' => 4, 'login' => 'user3', 'email' => 'user3@mail.com', 'name' => 'User 3',        'is_active_sw' => 'Y', 'date_created' => date('Y-m-01 H:i:s'), ]
    ]);

    $records = $table->fetchRecords();
    foreach ($records as $record) {

        $record->name = "{$record->last_name} {$record->first_name}";
        $record->cell('name')->setAttr('class', 'fw-bold');

        if ($record->login === 'admin') {
            $record->setAttr('class', 'table-warning');
        }
    }

    return $table->toArray();
```

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance37

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

614d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d46eec372620664574541ea54a3278872c687d2529c2b0aa91d8f6f677e5299?d=identicon)[n2ref](/maintainers/n2ref)

---

Top Contributors

[![n2ref](https://avatars.githubusercontent.com/u/5215787?v=4)](https://github.com/n2ref "n2ref (2 commits)")

---

Tags

frameworktablecoreui

### Embed Badge

![Health badge](/badges/n2ref-coreui-table/health.svg)

```
[![Health](https://phpackages.com/badges/n2ref-coreui-table/health.svg)](https://phpackages.com/packages/n2ref-coreui-table)
```

###  Alternatives

[pestphp/pest-plugin-stressless

Stressless plugin for Pest

681.0M17](/packages/pestphp-pest-plugin-stressless)

PHPackages © 2026

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