Cart & Checkout Attributes: Troubleshooting
Symptoms, checks and solutions, known limitations and FAQ for the Cart & Checkout Attributes Sylius plugin.
Cart & Checkout Attributes: Troubleshooting
Troubleshooting
An attribute does not appear despite being configured
- Symptom: An attribute is marked as visible but does not show up in the cart or at checkout.
- Check: Is the kill switch active on the settings page? Does the relevant order item actually have a value for this attribute?
- Solution: Turn the kill switch on, or set the value on the product/variant - without a value, the column/row for that item is fully suppressed, not shown empty.
The "Checkout Attributes" admin sidebar entry is missing
- Symptom: The menu item under "MMKreativ Plugins" does not appear.
- Check: Run
bin/console mmd:cart-checkout-attributes:setup- it reports a missing route import along with the exact snippet. - Solution: Add the snippet from Installation under
config/routes/, clear the cache.
mmd:cart-checkout-attributes:setup fails about prerequisites
- Symptom: The command reports that migrations from the Sylius core namespace are still pending.
- Check: Run
bin/console doctrine:migrations:statusto check for pending core migrations. - Solution: Run
bin/console doctrine:migrations:migratefirst, then the setup command again.
The Shop API returns an empty collection despite configured attributes
- Symptom:
/api/v2/shop/cart-checkout-attribute-display-configsreturns an empty collection even though attributes are configured. - Check: Have this plugin's migrations fully run (
bin/console mmd:cart-checkout-attributes:setup)? - Solution: Run the migrations - the API deliberately degrades to an empty collection instead of a 500 when the table or a column is missing.
The feature has no effect on PostgreSQL
- Symptom: None of this plugin's tables exist, even though migrations were run.
- Check: The application's database driver.
- Solution: Not fixable - the migrations skip themselves on any database other than MySQL/MariaDB, by design.
Known limitations
- MySQL/MariaDB only. All three migrations are plain MySQL DDL and skip themselves on any other database.
- Order history shows the current state, not the historical one. Values and visibility flags on the account order history are always the product's current values, not the state at the time of purchase - there is no order-item-side snapshot. Accepted deliberately, not a bug.
- Worker-mode runtimes. Under FrankenPHP worker mode, RoadRunner or Swoole, the kill switch state and the list of visible attribute codes are cached once per worker process - a change only takes effect after the next worker recycle.
- No invoice or delivery-note hook. The display is limited to the cart, checkout and the shop's order summary - there is no hook for PDF documents.
- No write API. The Shop API is strictly read-only, configuration happens exclusively through the admin form.
FAQ
General
Why does a configured attribute not show up for a particular order? Either the kill switch is off, or the order item has no value for that attribute.
How do I check which version is installed? The settings page (admin sidebar → MMKreativ Plugins → Checkout Attributes) shows the installed version right in its title bar.
Configuration
Can I undo "Legally required in checkout" later? Yes - it is a plain, unguarded write, no confirmation needed.
Compatibility
Does the plugin work with PostgreSQL? No, see "Known limitations".
Does it work with FrankenPHP in worker mode? With a limitation - see "Known limitations".