proklung/wp-custom-page-editor-bundle
Composer 安装命令:
composer require proklung/wp-custom-page-editor-bundle
包简介
Бандл для редактирования кастомных таблиц в Wordpress
README 文档
README
Установка
composer require proklung/wp-custom-page-editor-bundle
Использование
Создание сущности
Сущность наследуется от DataManager.
Генераторы view
В описании полей (метод getMap) поле view_generator - кастомный генератор вывода этого поля в админке.
Текущие генераторы: postView (вывод поста), WpImageView (картинка из медиа-библиотеки).
Генератор реализует интерфейс ViewGeneratorInterface с методами:
viewList($param)- вид в спискеviewEditor($param, $payload = null)- вид на странице редактирования записи
К ним приложены классы Post и WpImage, реализующие интерфейс FieldProcessorInterface с методами:
public function beforeSaveDb($data)- перед сохранением в базу что-то сделатьpublic function afterLoadFromDb($data)- что-то сделать после загрузки из базы перед передачей во view.
События
getListenerEvents : список событий сущности. Что-то можно сделать с админкой перед выводом и так далее.
По умолчанию исполняется EditFormAfterLoadDefaultListener: первый столбец таблицы становится ссылкой на детальную
страницу редактирования записи.
Список событий:
AfterLoadDatabaseEvent- после загрузки записи из базыAfterSaveDatabaseEvent- после сохранения записи в базеBeforeSaveDatabaseEvent- перед сохранением записи в базеEditFormAfterLoadDatabaseEvent- перед генерацией столбцов редактора.
class ExampleEntity extends DataManager { /** * @inheritDoc */ public function getTableName() : string { return 'wp_example_custom_table'; } /** * @inheritDoc */ public function getEntityName(): string { return 'Example'; } /** * @inheritDoc */ public function getMap(): array { return [ [ 'name' => 'new_column', 'description' => 'Новый столбец', 'type' => 'varchar', 'length' => 50, 'nulled' => false, 'sortable' => true, 'default' => '', 'required' => false, 'placeholder' => true ], [ 'name' => 'modified_date', 'description' => 'Дата модификации', 'type' => 'datetime', 'sortable' => true, 'default' => null, 'view_type' => 'date', 'required' => false, ], [ 'name' => 'description', 'description' => 'Описание', 'type' => 'longtext', 'nulled' => false, 'sortable' => true, 'default' => '', 'view_type' => 'textarea', 'required' => false, 'validators' => [ new Assert\Length([ 'min' => 2, 'max' => 150, 'minMessage' => 'Description must be at least {{ limit }} characters long', 'maxMessage' => 'Description cannot be longer than {{ limit }} characters', ]) ] ], [ 'name' => 'picture', 'description' => 'Картинка', 'type' => 'int', 'view_type' => 'text', 'sortable' => true, 'default' => 0, 'required' => false, 'view_generator' => PostView::class, ], ]; } /** * @inheritDoc */ public function getListenerEvents() : array { return [ 'admin.custom.table.edit_screen_after_load' => new EditFormAfterLoadListener ]; } }
Заведения сервиса
Сервис должен быть помечен тэгом wp_custom_table_editable.
example_entity: class: Local\Services\Database\Entities\ExampleEntity tags: - { name: wp_custom_table_editable }
Все. В админке появится редактор этой таблицы.
Прочее
Создатель таблиц
Сервис table_admin_page_manager.creator_table.
setTable(string $table)- задать имя таблицыcreateFromSchema(DataManagerInterface $schema)- создать таблицу из схемы (схема - сущность, см. выше)
Сервис table_admin_page_manager.creator_schema - создать схему из реальной таблицы.
setTable(string $table)- задать имя таблицыexistTable()- существует ли таблица?getTableDescription()- получить схему таблицы
Генератор фикстур
Сервис table_admin_page_manager.fixture_generator.
fromSchema(DataManagerInterface $schema, int $count = 1)- создать столько-то записей по схеме сущности
Консольные команды
migrator:seed- Наполнить таблицу фикстурными данными
Параметры:
table- таблицаcount- сколько записей генерировать. По умолчанию - 5truncate- Чикать содержимое таблицы. По умолчанию - true
统计信息
- 总下载量: 20
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-30