Администратор программного обеспечения расширяет страницу сведений о собственности, используя отношение один ко многимPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Администратор программного обеспечения расширяет страницу сведений о собственности, используя отношение один ко многим

Сообщение Anonymous »

Попытка расширить свойство с помощью отношения «один ко многим», чтобы иметь возможность классифицировать каждую группу свойств. Я сделал расширение и миграцию. Кажется, все работает нормально, за исключением сохранения связи на странице сведений о свойствах панели администратора «/sw/property/detail/{id}», где я добавил раскрывающееся поле с помощью sw-entity-single-select. Любая помощь приветствуется. Вот мой текущий код:
class PropertyGroupExtension extends EntityExtension
{
public function getDefinitionClass(): string
{
return PropertyGroupDefinition::class;
}

public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new FkField(
'property_group_category_id',
'propertyGroupCategoryId',
PropertyGroupCategoryDefinition::class
))->addFlags(new ApiAware())
);

$collection->add(
(new ManyToOneAssociationField(
'propertyGroupCategory',
'property_group_category_id',
PropertyGroupCategoryDefinition::class,
'id',
false
))->addFlags(new ApiAware())
);
}
}
class PropertyGroupCategoryDefinition extends EntityDefinition
{
public const ENTITY_NAME = 'property_group_category';

public function getEntityName(): string
{
return self::ENTITY_NAME;
}

public function getEntityClass(): string
{
return PropertyGroupCategoryEntity::class;
}

protected function defineFields(): FieldCollection
{
return new FieldCollection([
(new IdField('id', 'id'))->addFlags(new ApiAware(), new PrimaryKey(), new Required()),
(new StringField('name', 'name'))->addFlags(new ApiAware(), new Required()),
(new OneToManyAssociationField('propertyGroups', PropertyGroupDefinition::class, 'property_group_category_id'))->addFlags(new ApiAware()),
]);
}
}
class PropertyGroupCategoryEntity extends Entity
{
use EntityIdTrait;

/**
* @var string
*/
protected $name;

/**
* @var PropertyGroupCollection|null
*/
protected $propertyGroups;

public function getName(): string
{
return $this->name;
}

public function setName(string $name): void
{
$this->name = $name;
}

public function getPropertyGroups(): ?PropertyGroupCollection
{
return $this->propertyGroups;
}

public function setPropertyGroups(PropertyGroupCollection $propertyGroups): void
{
$this->propertyGroups = $propertyGroups;
}
}
#[Package('core')]
class Migration1726207525CreatePropertyGroupCategory extends MigrationStep
{
public function getCreationTimestamp(): int
{
return 1726207525;
}

public function update(Connection $connection): void
{
$connection->executeStatement('
CREATE TABLE `property_group_category` (
`id` BINARY(16) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`created_at` DATETIME(3) NOT NULL,
`updated_at` DATETIME(3) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
');

$connection->executeStatement('
ALTER TABLE `property_group`
ADD COLUMN `property_group_category_id` BINARY(16) NULL AFTER `filterable`,
ADD CONSTRAINT `fk.property_group.property_group_category_id` FOREIGN KEY (`property_group_category_id`)
REFERENCES `property_group_category` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;
');
}

}

и вот здесь мне нужна помощь. это компонент административного ПО, уже переопределенный моим плагином.
import template from './sw-property-group-detail.html.twig';
import {Component} from 'Shopware';

Component.override('sw-property-detail-base', {
template,

inject: ['repositoryFactory'],

computed: {
propertyGroupRepository() {
return this.repositoryFactory.create('property_group');
},

propertyGroupCategoryRepository() {
return this.repositoryFactory.create('property_group_category');
},
},

methods: {
onChange(id) {
this.propertyGroup.propertyGroupCategoryId = id;
if (id) {
this.propertyGroupCategoryRepository.get(id).then((category) => {
this.propertyGroup.propertyGroupCategory = category;
});
} else {
this.propertyGroup.propertyGroupCategory = null;
}

console.log(this.propertyGroup) // the data is here but is not saved on click the save button. is there anything here i am missing out?
},
}
});

шаблон
{% block sw_property_detail_base_visible_on_detail %}
{% parent %}

{% endblock %}
sw/property/detail/


Подробнее здесь: https://stackoverflow.com/questions/789 ... y-relation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»