wieni/wmmodel_factory

定义工厂,允许您使用具有特定字段并填充随机数据的实体

安装次数: 4,763

依赖项: 1

建议者: 0

安全性: 0

星星: 0

关注者: 8

分支: 1

开放问题: 4

类型:drupal-module

2.0.1 2024-01-07 10:19 UTC

This package is auto-updated.

Last update: 2024-09-07 11:58:49 UTC


README

Latest Stable Version Total Downloads License

定义工厂,允许您使用具有特定字段并填充随机数据的实体

为什么?

  • 内置的生成随机实体的方法,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文件。