OroPlatform:在核心实体上添加自定义字段

OroPlatform: add custom field on core Entity

我目前正在处理 OroPlatform 项目,我需要在 BusinessUnit 核心实体上添加自定义字段。

我已经阅读了关于扩展核心实体的方式的 Oro 文档部分:https://doc.oroinc.com/backend/entities/extend-entities/#id1

<?php
namespace MyBundle\Bundle\AppBundle\Migrations\Schema\v1_0;

use Doctrine\DBAL\Schema\Schema;
use Oro\Bundle\EntityExtendBundle\EntityConfig\ExtendScope;
use Oro\Bundle\MigrationBundle\Migration\Migration;
use Oro\Bundle\MigrationBundle\Migration\QueryBag;

class AddColumnsToBusinessUnit implements Migration
{
    public function up(Schema $schema, QueryBag $queries)
    {
        $table = $schema->getTable('oro_business_unit');
        $table->addColumn('siret', 'string', [
            'oro_options' => [
                'extend' => ['owner' => ExtendScope::OWNER_CUSTOM],
                'entity' => ['label' => 'siret'],
            ],
        ]);
    }
}

当我 运行 命令 symfony console oro:migration:load --force 时,它起作用并且迁移应用到我的数据库。

现在,我想要一个必填字段。我已经看到指令 'notnull' => true 在数据库上设置一个不可空的字段。

一切正常,但我的领域在 organization/business_unit/create 路线上没有任何 JavaScript 验证。有什么想法吗?

您可以通过扩展已为要扩展的核心实体定义的验证元数据来验证新字段。

为此,请遵循 Symfony 官方文档并使用 YML 格式: https://symfony.com/doc/4.4/validation.html#constraint-configuration

您可以对该字段使用的约束是“不为空”。

这是一个例子:

# src/<YourBundlePath>/Resources/config/validation.yml
Oro\Bundle\OrganizationBundle\Entity\BusinessUnit:
    properties:
        siret:
            - NotBlank: ~