mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
Ensure proper handling of promotion channel configurations in form extensions
This commit is contained in:
parent
16ac32798b
commit
549bd25e73
2 changed files with 20 additions and 4 deletions
|
|
@ -56,18 +56,26 @@ final class PromotionActionTypeExtension extends AbstractTypeExtension
|
|||
return;
|
||||
}
|
||||
$storedCodes = $data->getConfiguration()[ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY] ?? [];
|
||||
if ($storedCodes === []) {
|
||||
$storedCodes = $availableCodes;
|
||||
}
|
||||
$event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)
|
||||
->setData(array_values(array_intersect($storedCodes, $availableCodes)));
|
||||
});
|
||||
|
||||
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void {
|
||||
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use ($availableCodes): void {
|
||||
$data = $event->getData();
|
||||
if (!$data instanceof PromotionActionInterface) {
|
||||
return;
|
||||
}
|
||||
$configuration = $data->getConfiguration();
|
||||
$selectedChannels = $event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)->getData() ?? [];
|
||||
$sortedSelected = $selectedChannels;
|
||||
$sortedAvailable = $availableCodes;
|
||||
sort($sortedSelected);
|
||||
sort($sortedAvailable);
|
||||
$configuration[ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY] =
|
||||
$event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)->getData() ?? [];
|
||||
($sortedSelected === $sortedAvailable) ? [] : $selectedChannels;
|
||||
$data->setConfiguration($configuration);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,18 +56,26 @@ final class PromotionRuleTypeExtension extends AbstractTypeExtension
|
|||
return;
|
||||
}
|
||||
$storedCodes = $data->getConfiguration()[ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY] ?? [];
|
||||
if ($storedCodes === []) {
|
||||
$storedCodes = $availableCodes;
|
||||
}
|
||||
$event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)
|
||||
->setData(array_values(array_intersect($storedCodes, $availableCodes)));
|
||||
});
|
||||
|
||||
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void {
|
||||
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use ($availableCodes): void {
|
||||
$data = $event->getData();
|
||||
if (!$data instanceof PromotionRuleInterface) {
|
||||
return;
|
||||
}
|
||||
$configuration = $data->getConfiguration();
|
||||
$selectedChannels = $event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)->getData() ?? [];
|
||||
$sortedSelected = $selectedChannels;
|
||||
$sortedAvailable = $availableCodes;
|
||||
sort($sortedSelected);
|
||||
sort($sortedAvailable);
|
||||
$configuration[ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY] =
|
||||
$event->getForm()->get(ChannelAwareConfigurationInterface::CHANNELS_CONFIGURATION_KEY)->getData() ?? [];
|
||||
($sortedSelected === $sortedAvailable) ? [] : $selectedChannels;
|
||||
$data->setConfiguration($configuration);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue