Info and News

Specials

Suppliers

Manufacturers

Notable changes in PrestaShop 8.0

Notable changes in PrestaShop 8.0

PHP support

PrestaShop 8.0 adds supports for PHP 8.0 and PHP 8.1 and requires at least PHP 7.2.5.
Notable changes

    Javascript files for migrated pages in the Back Office now are written in TypeScript (related change: #24791).
    Support for legacy translation dictionaries (eg: en.php, fr.php…, deprecated in 1.7), has been removed from Core controllers. Only modules can still use this system now.
    All modules present in the modules directory during the installation process will be installed by default (except in the web-based installation where you can unselect some of them). Modules can use Module::postInstall() to execute code after the shop installation is done (Read more).
    Twig has been updated to version 3. Deprecated features from v1 & v2 are no longer available.
    All upgrade scripts have been removed from the Core and moved to the Upgrade module.
    Using a hook alias will trigger a deprecation notice.
    If PrestaShop detects that a module registers for a Hook but doesn’t implement a method for it, an exception will be thrown when in developer mode. This error message is meant to help developers identify errors during module development and should not affect modules in production (Read more).
    Historically, the default Carrier’s name was “0”, now it is called “Click and collect”.
    The live exchange rate feature has been removed.
    In Back office, the .rtlfix file has been removed, although support for such files remains. It is recommended to port your changes (if any) inside the rtl.scss stylesheets.
    The new Distribution API allows modules to provide Module Manager with information about new and updated modules pulled from remote services. PrestaShop 8 leverages this new feature to handle downloads and updates for the project’s modules.
    Because of the support for PHP 8.1 many methods have declared a return type now.
    The logic for customers' login and registration is now split between two controllers (RegistrationController, AuthController). This might impact third-party themes and modules as the URL to the registration has changed.
    Before PrestaShop places an order there is an additional request now, to see if the number of products in the cart is still valid. This might require third-party payment modules to implement the checks in their solutions accordingly.
    Due to the new password policy management features, third-party solutions that generate customer data might require to implement changes accordingly.
    In some countries, loading fonts through Google Fonts' CDN service has been judged incompatible with GDPR, so these fonts are now built into the project. This should not affect your work, but spreading awareness around this topic is important.

Symfony update

Symfony has been upgraded to 4.4, which includes a number of changes:

    Doctrine ORM cache adapters for Memcache & APC are not available anymore. The way cache is handled changed in Symfony 4.4 and memcache & apc are not part of the new available caching methods.
    Services that are not dependency injected and that are not declared as “public” are removed from the container
    ChoiceType’s option “choices_as_values” doesn’t exist anymore, it was previously already true by default
    It’s not possible to call Form::isValid() if Form::isSubmitted() was not called before
    The syntax bundlename:path:file.html.twig is now invalid, use @bundlename/path/to/file.html.twig
    Syntax for _controller in routes should not use the short notation anymore (PrestaShopBundle:Admin/Error:enableDebugMode for instance), use the full path instead: PrestaShopBundleControllerAdminErrorController::enableDebugModeAction
    Translation files have been moved from /app/Resources/translations/ to /translations/
    The annotation @AdminSecurity is_granted() should not take an array, use explicit && or || when checking multiple rights
    Form type extensions should stop implementing public function getExtendedType() and implement public static function getExtendedTypes(): iterable instead (read more).

New product page

Themes

Themes using jQuery UI tooltips might need to be updated to use bootstrap’s tooltips (read more);
Child themes

The use_parent_assets setting in theme.yml, when set to true, makes the child theme load its parent’s assets (css, img and js) instead of its own. This feature, not functional and ignored in 1.7, has been fixed and improved for 8.0. For further fine-tuning, a new set of child_*_url variables is made available when the feature is active, allowing theme developers to access the parent and child’s asset urls separately.

To maintain the behavior of 1.7 and load the child theme’s assets, use_parent_assets must be set to false.
Classic theme

    In checkout/_partials/steps/payment.tpl, the ID payment-form has been changed to payment-{$option.id}-form.
    Empty state messages are now shown inside the block (as opposed to the top of the page) in pages like order history, addresses, etc (read more).
    The Classic theme now supports the new password policy introduced here.

Back office interface

The Bootstrap version used in Symfony-based Back office pages has been updated from 4.0 to 4.4.

Optimize the SEO of your Prestashop with PS IT Clean urls Module

The most used module for cleaning Prestashop friendly Urls!

Or choose the Advanced version, in case of more articulated needs

It might interest you... Prestashop SEO Total Pack

The 4 essential modules for the SEO of your Prestashop in a single "Extra Discount" package!

pacchetto-prestashop-seo-totale.jpg

Optimize your Prestashop SEO with PS IT SEO Modules!

See all our solutions ...

Login

Sign in

Forgot your password?


No account yet ?

Create your account

Create my account now


Support