Sylius/UPGRADE-2.0.md
Grzegorz Sadowski 50c07bb334
Merge branch '2.0' into api-platform-3
* 2.0: (64 commits)
  [Admin] Rename parameter
  [Admin] Change command handlers and console command ids to dotted notation
  [Core] Change command handlers and console command ids to dotted notation
  [Core] Use new services
  [Core] Rename Message to Command
  [Admin] Rename Message to Command
  [Promotion] Remove deprecated commands
  [Ui] Remove deprecated commands
  [User] Remove deprecated commands
  [Admin] Configure and use anonymous view in store component
  [Admin] Add missing order notes information
  [Behat] Use test attribute to retrieve order notes
  [Admin] Render pagination and enabled filter test attributes
  [Behat] Enable scenarios and improve implementation for filtered pages redirections
  [Admin] Render view in store button in the variant edit page
  [CS][DX] Refactor
  [Behat] Improve view product in store action
  [Behat] Enable viewing product in store from variant edit page scenarios
  [Behat] Enable deleting multiple product variants scenario
  [Behat] Enable remaining managing users scenario
  ...
2024-08-05 14:18:00 +02:00

12 KiB

UPGRADE FROM 1.13 TO 2.0

  1. Non-prefix serialization groups in Sylius resources have been removed. If you have extended any of them, you must prefix them with sylius:, for example:

    - #[Groups(['admin:product:index'])]
    + #[Groups(['sylius:admin:product:index'])]
    

Codebase

  • Doctrine MongoDB and PHPCR is not longer supported in ResourceBundle and GridBundle:

    • The following classes were removed:

      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\DataSource
      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\Driver
      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\ExpressionBuilder
      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\ExpressionBuilderInterface
      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\ExpressionVisitor
      • Sylius\Bundle\GridBundle\Doctrine\PHPCRODM\ExtraComparison
      • Sylius\Bundle\ResourceBundle\DependencyInjection\Driver\Doctrine\DoctrineODMDriver
      • Sylius\Bundle\ResourceBundle\DependencyInjection\Driver\Doctrine\DoctrinePHPCRDriver
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\MongoDB\DocumentRepository
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\MongoDB\TranslatableRepository
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\PHPCR\EventListener\DefaultParentListener
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\PHPCR\EventListener\NameFilterListener
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\PHPCR\EventListener\NameResolverListener
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\PHPCR\Form\Builder\DefaultFormBuilder
      • Sylius\Bundle\ResourceBundle\Doctrine\ODM\PHPCR\DocumentRepository
      • Sylius\Bundle\ResourceBundle\EventListener\ODMMappedSuperClassSubscriber
      • Sylius\Bundle\ResourceBundle\EventListener\ODMRepositoryClassSubscriber
      • Sylius\Bundle\ResourceBundle\EventListener\ODMTranslatableListener
    • The following services were removed:

      • sylius.event_subscriber.odm_mapped_super_class
      • sylius.event_subscriber.odm_repository_class
      • sylius.grid_driver.doctrine.phpcrodm
    • The following parameters were removed:

      • sylius.mongodb_odm.repository.class
      • sylius.phpcr_odm.repository.class
    • The following parameters were renamed:

      • sylius.message.admin_user_create.validation_groups to sylius_admin.command_handler.create_admin_user.validation_groups
    • The following configuration options were removed:

      • sylius.mailer.templates
  • Added the Sylius\Component\Order\Context\ResettableCartContextInterface that extends Sylius\Component\Order\Context\CartContextInterface and Symfony\Contracts\Service\ResetInterface.

  • The name of the default LiipImagineBundle's resolver and loader were changed from default to **sylius_image ** (reference). To change the default resolver and/or loader for LiipImagineBundle, configure cache and/or data_loader parameters under the liip_imagine key.

  • The sylius/calendar package has been replaced with symfony/clock package. All usages of the Sylius\Calendar\Provider\DateTimeProviderInterface class have been replaced with Symfony\Component\Clock\ClockInterface class.

    • The following classes were changed:

      • Sylius\Bundle\CoreBundle\CatalogPromotion\Announcer\CatalogPromotionAnnouncer
      • Sylius\Bundle\CoreBundle\MessageHandler\Admin\Account\RequestResetPasswordEmailHandler
      • Sylius\Bundle\CoreBundle\PriceHistory\Logger\PriceChangeLogger
      • Sylius\Bundle\CoreBundle\PriceHistory\Remover\ChannelPricingLogEntriesRemover
      • Sylius\Bundle\ShippingBundle\Assigner\ShippingDateAssigner
      • Sylius\Bundle\PromotionBundle\Criteria\DateRange
      • Sylius\Bundle\ApiBundle\Applicator\ArchivingShippingMethodApplicator
      • Sylius\Bundle\ApiBundle\CommandHandler\Account\RequestResetPasswordTokenHandler
      • Sylius\Bundle\ApiBundle\CommandHandler\Account\VerifyCustomerAccountHandler
      • Sylius\Component\Taxation\Checker\TaxRateDateEligibilityChecker
  • The parameter order of Sylius\Bundle\CoreBundle\Form\Type\Checkout\AddressType::__construct has been changed:

    public function __construct(
    +   private readonly AddressComparatorInterface $addressComparator,
        string $dataClass,
        array $validationGroups = []
    -   private readonly AddressComparatorInterface $addressComparator = null,
    )
  • The \Serializable interface has been removed from the Sylius\Component\User\Model\UserInterface.

  • The parameter order of the Sylius\Component\Core\OrderProcessing\OrderPaymentProcessor::__construct has been changed:

    public function __construct(
        private OrderPaymentProviderInterface $orderPaymentProvider,
    -   private string $targetState = PaymentInterface::STATE_CART,
        private OrderPaymentsRemoverInterface $orderPaymentsRemover,
        private array $unprocessableOrderStates,
    +   private string $targetState = PaymentInterface::STATE_CART,
    )
  • The signature of method applyToCollection of the following classes has been changed:
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\AcceptedProductReviewsExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\AddressesExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\AvailableProductAssociationsInProductCollectionExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\CountryCollectionExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\CurrencyCollectionExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\EnabledProductVariantsExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\HideArchivedShippingMethodExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\LocaleCollectionExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\OrdersByChannelExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\OrdersByLoggedInUserExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\ProductsByChannelAndLocaleCodeExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\ProductsByTaxonExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\ProductsWithEnableFlagExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\ProductsWithEnableFlagExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\RestrictingFilterEagerLoadingExtension
    • Sylius\Bundle\ApiBundle\Doctrine\QueryCollectionExtension\TaxonCollectionExtension
    public function applyToCollection(
        QueryBuilder $queryBuilder,
        QueryNameGeneratorInterface $queryNameGenerator,
        string $resourceClass,
    -   string $operationName = null,
    +   \ApiPlatform\Metadata\Operation $operation = null,
        array $context = [],
    ): void;
  • The swiftmailer/swiftmailer dependency has been removed. Use symfony/mailer instead.

  • The following repository classes and interfaces were added, if you have custom repositories, you need to update them to extend the new ones:

    Addressing:

    • Sylius\Bundle\AddressingBundle\Doctrine\ORM\AddressRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Addressing\Repository\AddressRepositoryInterface
    • Sylius\Bundle\AddressingBundle\Doctrine\ORM\CountryRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Addressing\Repository\CountryRepositoryInterface
    • Sylius\Bundle\AddressingBundle\Doctrine\ORM\ProvinceRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Addressing\Repository\ProvinceRepositoryInterface
    • Sylius\Bundle\AddressingBundle\Doctrine\ORM\ZoneMemberRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Addressing\Repository\ZoneMemberRepositoryInterface

    Attribute:

    • Sylius\Bundle\AttributeBundle\Doctrine\ORM\AttributeRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Attribute\Repository\AttributeRepositoryInterface
    • Sylius\Bundle\AttributeBundle\Doctrine\ORM\AttributeTranslationRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Attribute\Repository\AttributeTranslationRepositoryInterface
    • Sylius\Bundle\AttributeBundle\Doctrine\ORM\AttributeValueRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Attribute\Repository\AttributeValueRepositoryInterface

    Product:

    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAssociationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAssociationTypeTranslationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAttributeRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAttributeTranslationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductOptionTranslationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductOptionValueRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductOptionValueTranslationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductTranslationRepository
    • Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductVariantTranslationRepository

    Currency:

    • Sylius\Bundle\CurrencyBundle\Doctrine\ORM\CurrencyRepository extends Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository implements Sylius\Component\Currency\Repository\CurrencyRepositoryInterface
  • The following repository classes and interfaces namespaces were changed, if you have custom repositories, you need to update them to extend the new ones:

    Addressing:

    • Sylius\Bundle\CoreBundle\Doctrine\ORM\AddressRepository extended class changed from Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository to Sylius\Bundle\AddressingBundle\Doctrine\ORM\AddressRepository
    • Sylius\Component\Core\Repository\AddressRepositoryInterface implemented interface changed from Sylius\Component\Resource\Repository\RepositoryInterface to Sylius\Component\Addressing\Repository\AddressRepositoryInterface

    Attribute:

    • Sylius\Bundle\CoreBundle\Doctrine\ORM\AttributeRepository extended class changed from Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository to Sylius\Bundle\AttributeBundle\Doctrine\ORM\AttributeRepository
    • Sylius\Component\Product\Repository\ProductAttributeValueRepositoryInterface extended interface changed from Sylius\Component\Resource\Repository\RepositoryInterface to Sylius\Component\Attribute\Repository\AttributeValueRepositoryInterface

    Product:

    • Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductAssociationRepository extended class changed from Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository to Sylius\Bundle\ProductBundle\Doctrine\ORM\ProductAssociationRepository
  • A new parameter has been added to specify the validation groups for a given zone. If you have any custom validation groups for zone member, you need to add them to your config/packages/_sylius.yaml file. This is handled by Sylius\Bundle\AddressingBundle\Validator\Constraints\ZoneMemberGroup and it resolves the groups based on the type of the passed zone.

    sylius_addressing:
      zone_member:
        validation_groups:
          country:
            - 'sylius'
            - 'sylius_zone_member_country'
          zone:
            - 'sylius'
            - 'sylius_zone_member_zone'
    

Frontend

  • use_webpack option was removed from the sylius_ui configuration, and the Webpack has become the only module bundler provided by Sylius.
  • use_webpack twig global variable was removed. Webpack is always used now, and there is no need to check for it.