proklung / wp-custom-page-editor-bundle
用于Wordpress编辑自定义表格的Bundle
1.2.3
2021-04-30 15:59 UTC
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
.
视图生成器
在字段描述(方法 getMap
)中,字段 view_generator
- 在后台中输出此字段的自定义生成器。
当前生成器: postView
(输出帖子),WpImageView
(媒体库中的图片)。
生成器实现了 ViewGeneratorInterface
接口,具有以下方法
viewList($param)
- 列表视图viewEditor($param, $payload = null)
- 编辑页面的视图
附带的类有 Post
和 WpImage
,它们实现了 FieldProcessorInterface
接口,具有以下方法
public function beforeSaveDb($data)
- 在保存到数据库前做一些事情public function afterLoadFromDb($data)
- 在从数据库加载后,在传递到视图之前做一些事情
事件
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