Cart & Checkout Attributes
Displays selected product attributes in cart, checkout and order summary - for the EU requirement to show essential product characteristics before purchase. With Shop API, admin configuration and kill switch.
Cart & Checkout Attributes
This documentation always describes the latest published version.
Overview
Out of the box, Sylius only carries the product name, chosen variant, quantity and price through cart and checkout - any product attribute values shown on the product page are lost after that. For shops operating under German/EU law, that is a problem: Art. 246a EGBGB (implementing the Consumer Rights Directive) requires that essential characteristics of the goods are shown on the page immediately before the order is placed - case law holds that a link back to the product page is not enough.
This plugin lets admins mark, per product attribute, whether and how it is shown again in the cart, checkout summary and (depending on scope) order confirmation - without overriding any core templates.
Attributes such as material, dimensions or fill quantity show up again in cart and checkout, not just on the product page.
graph LR
A["Cart / Checkout / Order Summary (Twig Hook)"] --> C["Twig Functions"]
B["Shop API Request"] --> D["State Provider"]
C --> E["Kill Switch + Display Config"]
D --> E
E --> F["Attribute Partial (SyliusAttribute Types)"]
E --> G["JSON Response"]
Documentation
| Page | Content |
|---|---|
| Installation | Composer via Packeton, bundle/routes, setup command, update, uninstallation |
| Configuration | Admin form extension, kill switch, practical examples |
| Storefront | Twig Hooks in cart, checkout and order summary |
| Shop API | Endpoints, fields, filters, error behaviour |
| Extending | Repository interface, the plugin's own hook points, admin menu convention |
| Troubleshooting | Symptoms → check → solution, limitations, FAQ |
| Technical | Architecture, entities, migrations, enum |
Features
| Feature | Description |
|---|---|
| Three-state checkout visibility | Per attribute: Not visible / Visible / Mandatory |
| Separate cart visibility | Its own flag, independent of the checkout setting |
| Admin integration without a new CRUD page | Its own card directly on the existing product attribute form |
| Reuses the attribute partials | Checkbox, date, percent and select values render exactly as on the product page |
| Order confirmation & account order history | The same table is reused on both |
| Shop API | Two read-only endpoints for settings and display configuration |
| Shop-wide kill switch | One setting turns off the whole display immediately |
| Setup command | Runs only this plugin's own migrations, checks the route import, idempotent |
Requirements
| Requirement | Version | Notes |
|---|---|---|
| Sylius | ^2.2 | |
| PHP | ^8.3 | |
| Symfony (console/finder/routing) | ^7.4 | |
| API Platform (doctrine-orm/metadata/state) | ^4.2.1 or ^5.0 | |
| doctrine/migrations | ^3.7 | |
| Database | MySQL/MariaDB required | Migrations are MySQL DDL - PostgreSQL is not supported |
PostgreSQL is not supported: the migrations skip themselves on any database other than MySQL/MariaDB, so the feature stays permanently inactive there.
License
Commercial license: one Sylius installation (all channels, including its development and staging environments) per license, no redistribution, updates for 12 months from purchase.
Support
Email: support@markus-michalski.net