PHPackages                             phact-cmf-modules/admin - 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. [Admin Panels](/categories/admin)
4. /
5. phact-cmf-modules/admin

ActiveLibrary[Admin Panels](/categories/admin)

phact-cmf-modules/admin
=======================

Admin module for phact CMF

v4.1.0(3y ago)07.8k↑166.7%33MITPHPPHP ^7.1.3 | ^8.0

Since Aug 6Pushed 3y ago1 watchersCompare

[ Source](https://github.com/phact-cmf-modules/Admin)[ Packagist](https://packagist.org/packages/phact-cmf-modules/admin)[ Docs](https://github.com/phact-cmf-modules/Admin)[ RSS](/packages/phact-cmf-modules-admin/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (1)Versions (11)Used By (3)

Админ-панель для phact
======================

[](#админ-панель-для-phact)

Стандартный вывод модели в админ-панель
---------------------------------------

[](#стандартный-вывод-модели-в-админ-панель)

Допустим, выводим в админ-панель модель *Book*

Пример модели:

```
class Book extends Model
{
    public static function getFields()
    {
        return [
            'name' => [
                'class' => CharField::class,
                'label' => 'Наименование'
            ],
        ];
    }
}
```

Добавляем в свой модуль папку *Admin*, создаем файл *BookAdmin.php*

*Именование файла не имеет ограничений, можно назвать его, к примеру, и BookMyAdmin.php*

```
class BookAdmin extends Admin
{
    public function getSearchColumns()
    {
        return ['name'];
    }

    public function getModel()
    {
        return new Book();
    }

    public static function getName()
    {
        return 'Книги';
    }

    public static function getItemName()
    {
        return 'Книга';
    }
}
```

Атрибуты и методы:

**getSearchColumns** - массив со списком атрбутов для поиска по моделям

**getModel** - модель, с которой работает данная "админка"

**getName** - именование "админки" (пункт в меню, хлебные крошки)

**getItemName** - именование отдельного элемента "админки"

Подключение собственных форм
----------------------------

[](#подключение-собственных-форм)

Установим свою форму для редактирования и создания моделей

Форма должна работать с моделью *Book* и быть унаследована от *ModelForm*

```
class BookAdmin extends Admin
{
...
    public function getForm()
    {
        return new BookAdminForm();
    }
...
}
```

Если нам необходимо указать отдельные формы для редактирования и создания моделей, указываем ее следующим образом:

```
class BookAdmin extends Admin
{
...
    public function getForm()
    {
        return new BookAdminCreateForm();
    }

    public function getUpdateForm()
    {
        return new BookAdminUpdateForm();
    }
...
}
```

Атрибуты и методы:

**getForm** - указание формы для создания и редактирования моделей

**getUpdateForm** - указание отдельной формы для редактирования моделей

Связанные админ-панели (RelatedAdmin)
-------------------------------------

[](#связанные-админ-панели-relatedadmin)

Связанные админ-панели помогают организовать удобное создание и редактирование моделей, связанных c текущей моделю через ForeignKey. Например в нашем случае с книгами это будут ее издания (*Release*)

Пример модели *Release*:

```
class Release extends Model
{
    public static function getFields()
    {
        return [
            'book' => [
                'class' => ForeignField::class,
                'modelClass' => Book::class,
                'label' => 'Книга'
            ],
            'year' => [
                'class' => CharField::class,
                'label' => 'Год'
            ],
            'position' => [
                'class' => PositionField::class,
                'editable' => false,
                'default' => 0,
                'relations' => [
                    'book'
                ]
            ]
        ];
    }

    public function __toString()
    {
        return (string) $this->year;
    }
}
```

Создаем для нее следующую "админку" *ReleaseAdmin*

```
class ReleaseAdmin extends Admin
{
    public static $ownerAttribute = 'book';

    public function getSearchColumns()
    {
        return ['year'];
    }

    public function getModel()
    {
        return new Release();
    }

    public static function getName()
    {
        return 'Издания';
    }

    public static function getItemName()
    {
        return 'Издание';
    }
}
```

Как можно увидеть, от стандартной "админки" она отличается только атрибутом **$ownerAttribute**, который указывает на связь в модели, через которую данная "админка" будет поключатся к другим.

И модифицируем *BookAdmin*:

```
class BookAdmin extends Admin
{
...
    public function getRelatedAdmins()
    {
        return [
            'releases' => ReleaseAdmin::class
        ];
    }
...
}
```

Теперь *ReleaseAdmin* будут выводится внутри *BookAdmin*

Атрибуты и методы:

**static $ownerAttribute** - указание связи для дочерних "админок", через которую данная "админка" будет подключена к родительской

**getRelatedAdmins** - определение дочерних "админок" внутри родительской

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~160 days

Recently: every ~336 days

Total

10

Last Release

1437d ago

Major Versions

v1.0.1 → v2.0.02018-10-04

v2.0.3 → v3.0.02019-03-12

v3.0.0 → v4.0.02021-12-28

PHP version history (3 changes)1.0.0PHP &gt;=5.6

v1.0.1PHP ^7.1.3

v4.0.0PHP ^7.1.3 | ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/324fc1713367ed6c64d63e6ad760b2603c7e231be26f726f034eff98595c4744?d=identicon)[AntonOkulov](/maintainers/AntonOkulov)

---

Top Contributors

[![AntonOkulov](https://avatars.githubusercontent.com/u/34657149?v=4)](https://github.com/AntonOkulov "AntonOkulov (16 commits)")[![hashstudio](https://avatars.githubusercontent.com/u/17700234?v=4)](https://github.com/hashstudio "hashstudio (15 commits)")[![ProRezak](https://avatars.githubusercontent.com/u/41462839?v=4)](https://github.com/ProRezak "ProRezak (3 commits)")

### Embed Badge

![Health badge](/badges/phact-cmf-modules-admin/health.svg)

```
[![Health](https://phpackages.com/badges/phact-cmf-modules-admin/health.svg)](https://phpackages.com/packages/phact-cmf-modules-admin)
```

PHPackages © 2026

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