wieni/ wmmodel_factory
定义工厂,允许您使用具有特定字段并填充随机数据的实体
2.0.1
2024-01-07 10:19 UTC
Requires
- php: ^7.3 || ^8.0
- drupal/core: ^9.3 || ^10
- fakerphp/faker: ^1.10
Requires (Dev)
- ergebnis/composer-normalize: ^2.0
- wieni/wmcodestyle: ^1.3
This package is auto-updated.
Last update: 2024-09-07 11:58:49 UTC
README
定义工厂,允许您使用具有特定字段并填充随机数据的实体
为什么?
- 内置的生成随机实体的方法,
ContentEntityStorageInterface::createWithSampleValues
,在很多方面都存在不足:它未经测试,存在许多问题,并且不够灵活。 - 使用与Laravel的模型工厂相同的API
- 使用Faker库生成适合实体类型的真实内容。
安装
此包需要PHP 7.1和Drupal 8或更高版本。可以使用Composer进行安装。
composer require wieni/wmmodel_factory
它是如何工作的?
创建工厂
工厂是负责生成用于填充新创建实体字段的数据的类。
可以通过创建带有@EntityFactory
注释的插件来添加特定实体类型/包组合的工厂,在entity_type
参数中定义实体类型ID,在bundle
参数中定义包。类还应实现EntityFactoryInterface
接口。
还可以通过通过name
注释参数提供唯一名称来为同一实体类型/包组合创建多个工厂。
示例
<?php namespace Drupal\your_module\Entity\ModelFactory\Factory\Node; use Drupal\your_module\Entity\Meta\Meta; use Drupal\wmmodel_factory\EntityFactoryBase; /** * @EntityFactory( * entity_type = "node", * bundle = "page" * ) */ class PageFactory extends EntityFactoryBase { public function make(): array { return [ 'title' => $this->faker->sentence(4), 'menu_link' => null, 'field_meta' => [ 'entity' => $this->faker->entity(Meta::class), ], 'field_intro' => $this->faker->optional()->text(320), ]; } }
创建状态
状态允许您定义可以应用于模型工厂的任何组合的离散修改。例如,您的页面模型可能有一个unpublished
状态,该状态会修改其默认属性值之一。
可以通过创建带有@EntityState
注释的插件来添加特定实体类型/包组合的状态,在entity_type
参数中定义实体类型ID,在bundle
参数中定义包,并在name
参数中定义唯一的名称。类还应实现EntityStateInterface
接口。
示例
<?php namespace Drupal\your_module\Entity\ModelFactory\State\Node; use Drupal\wmmodel_factory\EntityStateBase; /** * @EntityState( * name = "unpublished", * entity_type = "node", * ) */ class UnpublishedState extends EntityStateBase { public function make(): array { return [ 'status' => 0, ]; } }
生成实体
待办事项
变更日志
此项目的所有重大更改都将记录在CHANGELOG文件中。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件security@wieni.be而不是使用问题跟踪器。
许可证
在MIT许可证下分发。有关更多信息,请参阅LICENSE文件。