https://github.com/proklung/wp.custom.page.editor.bundle
Бандл для редактирования кастомных таблиц в Wordpress
https://github.com/proklung/wp.custom.page.editor.bundle
php7 wordpress wordpress-symfony
Last synced: 2 months ago
JSON representation
Бандл для редактирования кастомных таблиц в Wordpress
- Host: GitHub
- URL: https://github.com/proklung/wp.custom.page.editor.bundle
- Owner: ProklUng
- Created: 2021-04-30T12:54:21.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-04-30T15:59:21.000Z (about 4 years ago)
- Last Synced: 2024-12-25T21:24:22.750Z (4 months ago)
- Topics: php7, wordpress, wordpress-symfony
- Language: PHP
- Homepage:
- Size: 49.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.MD
Awesome Lists containing this project
README
# Бандл для редактирования кастомных таблиц в Wordpress
## Установка
`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` - перед генерацией столбцов редактора.```php
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`.
```yaml
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` - сколько записей генерировать. По умолчанию - 5
- `truncate` - Чикать содержимое таблицы. По умолчанию - true