Notable changes in PrestaShop 8.1

PHP support

PrestaShop 8.1 has the same PHP requirement as Prestashop 8.0.

PrestaShop 8.0 added support for PHP 8.0 and PHP 8.1 and required at least PHP 7.2.5.

New product page

The new Product page in Back Office has been introduced. Discover how to extend it with modules in this chapter.

Notable changes

  • Introduction of _raw parameter on translations to avoid html escaping in translator. PR#30415
  • Changed location of Smarty caching type configuration from database to config/defines.inc.php PR#29172
  • Improve extendability of the new product page form in BO: added NavigationTabType to create custom tabs in BO product page PR#28752
  • Moved grid column type classes, see deprecation list below PR#30800
  • Behavior change: when deleting an image type, its images are now deleted PR#30510
  • Auto update of modules configuration option is no longer available PR#30467
  • Added getters in CmsController, OrderConfirmationController, ProductController, CategoryController, ManufacturerController, SupplierController PR#30408
  • Added Currency::getDefaultCurrencyId() method to avoid retrieving PS_CURRENCY_DEFAULT from configuration in various classes PR#30398
  • actionAjaxDie<Controller><Method>Before now receives its value parameter via reference PR#30347
  • Deprecated Validate::isAnything() since it was always returning true PR#30163
  • Refactored frontend sitemap and introduced actionModifyFrontendSitemap hook PR#29797
  • Introduced actionGenerateDocumentReference hook to allow overriding order reference PR#29781
  • Introduced 3 new hooks about Contact Page: displayContactRightColumn, displayContactContent, displayContactLeftColumn in classic and hummingbird themes, and removed related widget hooks PR#29516
  • Introduced Tools::getCurrentUrl() to retrieve the current URL in a hook PR#28541
  • BC break: Shop::getBaseURL() use secure mode by default PR#28469
  • Vue was upgraded from 2.6 to 3.2, see below PR#28463
  • Customer Settings > Customer page is now multistore compatible PR#27608
  • Introduced PrestaShop\PrestaShop\Core\Security\PasswordGenerator class to generate random passwords with multiples types/lengths PR#31004
  • Introduced PrestaShop\PrestaShop\Core\Security\Hashing class to hash a password from a plain text and a salt with md5 PR#31004
  • Introduced actionProductPriceCalculation hook PR#27927
  • Added a new Smarty variable theme_dir in front controllers PR#30383
  • Added a feature to disable core.js loading on custom themes PR#29995. More informations
  • Added supplier url and manufacturer url to Smarty {url} helper PR#30242 and PR#30314
  • Fixed modules autoloaders and service configurations registrations priority PR#30588. More informations
  • Introduced actionLoggerLogMessage hook PR#28999. Hook details page
  • Unregistered hooks are now collected in debug toolbar PR#29314
  • Added Sortable Javascript library to the core PR#30225

BC Breaks (Backward Compatibility Breaks)

  • Shop::getBaseURL() use secure mode by default PR#28469
  • For the class PrestaShop\PrestaShop\Core\Domain\TaxRulesGroup\QueryResult, constructor parameters are now TaxRulesGroupId $taxRulesGroupId, string $name, bool $active, array $shopAssociationIds PR#28812
  • Webservice does now respect the maximum image upload size set in back office (PS_LIMIT_UPLOAD_IMAGE_VALUE) PR#29135

Deprecations

PHP

  • PrestaShop\PrestaShop\Core\String\CharacterCleaner → Its use is not required
  • Customer::validateController() → The password check has been moved in controllers and this method is not called anywhere since 1.7.0
  • Prestashop\PrestaShop\Core\Grid\Column\Type\BooleanColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\BooleanColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\ColorColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\ColorColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\Common\IdentifierColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\IdentifierColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\DataColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\DataColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\DisableableLinkColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\DisableableLinkColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\LinkGroupColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\LinkGroupColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\OrderPriceColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Order\OrderPriceColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\PreviewColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\PreviewColumn
  • Prestashop\PrestaShop\Core\Grid\Column\Type\PrivateColumn → moved to PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\PrivateColumn
  • CmsController::$cms → use $cmsControllerInstance->getCms() instead
  • CmsController::$cms_category → use $cmsControllerInstance->getCmsCategory() instead
  • Validate::isAnything() → will be removed in 9.0 since returns always true

Updated dependencies

PHP libraries

Library name Old version New version
api-platform/core ~ Not present ~ ^2.7
lcobucci/jwt ~ Not present ~ ^3.4.6
league/oauth2-server ~ Not present ~ ^8.3
nyholm/psr7 ~ Not present ~ ^1.5
symfony/psr-http-message-bridge ~ Not present ~ ^2.1

JS libraries

Library name Old version New version
vue 2.6.x 3.2.x
Sortable ~ Not present ~ 1.15.0
As Vue 2.x will reach EOL on December 31st, 2023, Vue dependency was bumped to 3.2. Every linked dependencies were also bumped to higher version to keep 3.2 compatibility. Please refer to: PR#28463 for an exhaustive list.