#symfony #orocommerce
#symfony #orocommerce
Вопрос:
В настоящее время я работаю над проектом OroPlatform, и мне нужно добавить настраиваемое поле в BusinessUnit
основной объект.
Я прочитал раздел документации Oro о способе расширения основных объектов: https://doc.oroinc.com/backend/entities/extend-entities/#id1
<?php
namespace MyBundleBundleAppBundleMigrationsSchemav1_0;
use DoctrineDBALSchemaSchema;
use OroBundleEntityExtendBundleEntityConfigExtendScope;
use OroBundleMigrationBundleMigrationMigration;
use OroBundleMigrationBundleMigrationQueryBag;
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
по настройке поля, не подлежащего обнулению, в базе данных.
Все работает хорошо, но мое поле не имеет никакой проверки JavaScript на organization/business_unit/create
маршруте. Есть идеи?
Ответ №1:
Вы можете проверить новое поле, расширив метаданные проверки, которые уже определены для расширяемой базовой сущности.
Для этого, пожалуйста, следуйте официальной документации Symfony и используйте формат YML: https://symfony.com/doc/4.4/validation.html#constraint-configuration
Ограничение, которое вы можете использовать для поля, — «не пустое».
Вот пример:
# src/<YourBundlePath>/Resources/config/validation.yml
OroBundleOrganizationBundleEntityBusinessUnit:
properties:
siret:
- NotBlank: ~
Комментарии:
1. Вау, спасибо тебе @Andrey Yatsenko, это абсолютно то, что мне было нужно! Рекомендуется ли добавлять
'notnull' => true
в мой файл миграции? Если это так, как я могу переопределитьLoadOrganizationAndBusinessUnitData.php
fixture из OrganizationBundle по умолчанию?2. Значение notnull в миграции в порядке, как только оно будет обработано в коде. Вы можете переопределить миграцию, запустив другую зависимую миграцию после исходной и изменив данные, загруженные предыдущей миграцией.