The result is cached once per request and channel code (WidgetConfigResolver, kernel.reset), since several storefront templates on the same page ask for the same channel.
src/
βββ Api/
β βββ AccessibilitySettingsProvider.php # API Platform state provider
β βββ Resource/AccessibilitySettings.php # API resource (GET /shop/accessibility-settings)
βββ DependencyInjection/
β βββ Configuration.php
β βββ MmdSyliusAccessibilityExtension.php # Bundle extension, Doctrine/grid/hook prepend
βββ Command/SetupCommand.php # mmd:accessibility:setup
βββ Entity/
β βββ ChannelSettings.php # the plugin's only table
β βββ ChannelSettingsInterface.php
β βββ WidgetPosition.php # enum: bottom_right, bottom_left
βββ Form/Type/ChannelSettingsFormType.php # @internal
βββ Menu/
β βββ AdminMenuListener.php # @internal
β βββ MenuGroup.php # "MMKreativ Plugins" sidebar group
βββ Migrations/Version20261003140000.php
βββ Settings/
β βββ ChannelSettingsRepository.php
β βββ ChannelSettingsRepositoryInterface.php
βββ Twig/AccessibilityTwigExtension.php
βββ Widget/
βββ WidgetConfig.php
βββ WidgetConfigResolver.php
βββ WidgetConfigResolverInterface.php
A single table, mmd_sylius_accessibility_channel_settings, keyed by channel_code rather than a foreign key - the plugin needs no Sylius core table in its own mapping for that.
| Column | Type | Meaning |
|---|---|---|
channel_code |
string, unique |
Channel code, not a foreign key |
enabled |
boolean |
Widget on/off |
position |
string(16) |
bottom_right / bottom_left |
skip_link_enabled |
boolean |
Skip link on/off |
show_font_size |
boolean |
Font size tool |
show_contrast |
boolean |
Contrast tool |
show_color_filter |
boolean |
Colour filter tool |
show_blue_light |
boolean |
Blue light filter tool |
show_animations |
boolean |
Reduced motion tool |