承接 phact-cmf-modules/admin 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phact-cmf-modules/admin

最新稳定版本:v4.1.0

Composer 安装命令:

composer require phact-cmf-modules/admin

包简介

Admin module for phact CMF

README 文档

README

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

Допустим, выводим в админ-панель модель 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)

Связанные админ-панели помогают организовать удобное создание и редактирование моделей, связанных 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 - определение дочерних "админок" внутри родительской

统计信息

  • 总下载量: 7.79k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-08-06