Sylius/UPGRADE-2.1.md

167 lines
7 KiB
Markdown

# UPGRADE FROM `2.1.8` TO `2.1.9`
1. The `Sylius\Bundle\AdminBundle\Twig\Component\Dashboard\StatisticsComponent` constructor now requires
a `Symfony\Component\Clock\ClockInterface` as the third argument. Not passing it is deprecated
and will be prohibited in Sylius 3.0.
1. The priorities of hookables in `sylius_admin.order.update.content.form.shipping_address` hook have been adjusted
to match `sylius_admin.order.update.content.form.billing_address` and fix duplicate priority values.
If you have customized these hooks or added custom hookables with priorities between the old values,
please review your priority configuration:
| Hookable | Old Priority | New Priority |
|----------------|--------------|--------------|
| company | 700 | 800 |
| first_name | 600 | 700 |
| last_name | 500 | 600 |
| country | 400 | 500 |
| phone_number | 300 | 400 |
| street_address | 200 | 300 |
# UPGRADE FROM `2.1.7` TO `2.1.8`
## State Machine
1. Product Review Average Rating Update
The `after` callback for updating average ratings when a review is accepted has been disabled to prevent duplicate calculations.
This change affects the `sylius_product_review` state machine configuration in the `accept` transition.
The average rating updater callback had priority `-100` and was being executed twice, which has now been fixed by disabling this specific callback.
```diff
callbacks:
after:
sylius_update_rating:
on: ["accept"]
do: ["@sylius.updater.product_review.average_rating", "updateFromReview"]
args: ["object"]
priority: -100
+ disabled: true
```
# UPGRADE FROM `2.1.5` TO `2.1.6`
### API Platform
1. API Platform 4.2: the title and description fields are no longer present (use hydra:title / hydra:description and violations instead).
PHPUnit and Behat tests have been updated to account for these changes.
# UPGRADE FROM `2.1.2` TO `2.1.3`
### Deprecations
1. Not passing the `Symfony\Component\Routing\Matcher\UrlMatcherInterface` instance as the last argument to the `Sylius\Bundle\ShopBundle\Locale\StorageBasedLocaleSwitcher` constructor is deprecated and will be required in Sylius 3.0.
### Service configuration changes
1. The priority of the `sylius_shop.context.locale.storage_based` service's tag `sylius.context.locale` has been changed from `-64` to `64` to ensure proper execution order in the locale context chain.
# UPGRADE FROM `2.0` TO `2.1`
### General
1. The `sylius_admin_customer_orders_statistics` route has been deprecated.
1. The minimum version of Symfony 7 packages has been bumped from Symfony `^7.1` to `^7.2`
1. The `tabler` package has been updated to version `^1.3.0`. Please pay attention to the accordion element in final applications, as its implementation has changed.
### Twig Hooks
1. The `sylius_admin.dashboard.index.content.latest_statistics.new_customers` hook has been deprecated and disabled.
It has been replaced by the `sylius_admin.dashboard.index.content.latest_statistics.pending_actions`.
1. The `history`, `cancel` and `resend_confirmation_email` hookables from `'sylius_admin.order.show.content.header.title_block.actions'`
hook have been deprecated and disabled. Now these templates are located in `'sylius_admin.order.show.content.header.title_block.actions.list'` hook.
1. `'sylius_shop.account.address_book.index.content.main.buttons'` hook has been deprecated and disabled. Content
of this hook has been moved to `'sylius_shop.account.address_book.index.content.main.header'` section.
1. `'sylius_shop.account.address_book.index.content.main.buttons.add_address'` hook has been deprecated and disabled.
Content of this hook has been moved to `'sylius_shop.account.address_book.index.content.main.header.buttons.add_address'` section.
1. The `price`, `original_price`, `minimum_price` hookables from `'sylius_admin.product.update.content.form.sections.channel_pricing'`
hook have been deprecated and disabled. Now these templates are located in `'sylius_admin.product.create.content.form.sections.channel_pricing.info'`.
### Assets
#### Overview of Changes
Sylius has modernized its asset management system with these key improvements:
- Bundle-prefixed controller paths
- JSON-based configuration
- Flexible controller registration options
#### Updated Controller Paths
All core controllers now use standardized bundle prefixes:
**Admin Controllers**
| Old Path | New Path |
|----------------------------------|-------------------------------------------------------|
| `slug` | `@sylius/admin-bundle/slug` |
| `taxon-slug` | `@sylius/admin-bundle/taxon-slug` |
| `taxon-tree` | `@sylius/admin-bundle/taxon-tree` |
| `delete-taxon` | `@sylius/admin-bundle/delete-taxon` |
| `product-attribute-autocomplete` | `@sylius/admin-bundle/product-attribute-autocomplete` |
| `product-taxon-tree` | `@sylius/admin-bundle/product-taxon-tree` |
| `save-positions` | `@sylius/admin-bundle/save-positions` |
| `compound-form-errors` | `@sylius/admin-bundle/compound-form-errors` |
| `tabs-errors` | `@sylius/admin-bundle/tabs-errors` |
**Shop Controller**
`api-login``@sylius/shop-bundle/api-login`
#### New Configuration System
**Configuration Files**
```text
assets/
admin/
controllers.json # Admin controller configurations
shop/
controllers.json # Shop controller configurations
controllers.json # Shared controllers configurations imported via flex
```
**Example Configuration**:
```json
{
"@sylius/admin-bundle/slug": {
"enabled": true,
"fetch": "lazy"
}
}
```
**Key Actions**:
- Enable/disable controllers
- Change loading behavior (lazy/eager)
- Extend with custom controllers
#### Controller Registration Methods
1. **Automatic Discovery**
- Files in `./controllers/` directory
- Naming pattern: `[name]_controller.js`
- Auto-registered with Stimulus
2. **JSON Configuration**
- Pre-configured bundle controllers
- Managed via `controllers.json` files
- Lazy-loaded by default
3. **Manual Registration**
```javascript
// In bootstrap.js:
import CustomController from './custom_controller_dir/custom_controller';
app.register('custom', CustomController);
```
Use for:
- Third-party controllers
- Non-standard locations
- Advanced initialization
#### Migration Guide
1. Update all controller references to use new prefixed paths
2. Review [Sylius-Standard PR #1126](https://github.com/Sylius/Sylius-Standard/pull/1126) for implementation details
**Note**: The old mechanism will remain functional until you actively migrate to the new system.