proklung / wp-custom-page-editor-bundle
Бандл для редактирования кастомных таблиц в Wordpress
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.3
- symfony/config: ~4|~5
- symfony/console: ~4|~5
- symfony/dependency-injection: ^3.4 || ^4.0 || ^5.0
- symfony/event-dispatcher: ~4|~5
- symfony/http-kernel: ^4.0 || ^5.0
- symfony/validator: ~4|~5
Requires (Dev)
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