[1.6.0.5]+ Reference error: $ is undefined dans le BackOffice


  • administrators

    Lorsqu'un module injecte un js dépendant de jQuery au travers de $this->context-controller->addJS() celui-ci est chargé dans la page bien avant que les dépendances jQuery existent.

    Le bug est lié à l'AdminController qui appelle le hookBackOfficeHeader avant d'avoir appelé $this->setMedia

    Pour corriger, changer dans classes/controller/Controller.php

        public function init()
        {
            if (_PS_MODE_DEV_ && $this->controller_type == 'admin') {
                set_error_handler(array(__CLASS__, 'myErrorHandler'));
            }
    
            if (!defined('_PS_BASE_URL_')) {
                define('_PS_BASE_URL_', Tools::getShopDomain(true));
            }
    
            if (!defined('_PS_BASE_URL_SSL_')) {
                define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true));
            }
        }
    

    par

        public function init()
        {
            if (_PS_MODE_DEV_ && $this->controller_type == 'admin') {
                set_error_handler(array(__CLASS__, 'myErrorHandler'));
            }
    
            if (!defined('_PS_BASE_URL_')) {
                define('_PS_BASE_URL_', Tools::getShopDomain(true));
            }
    
            if (!defined('_PS_BASE_URL_SSL_')) {
                define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true));
            }
            if ($this instanceof AdminController) {
               $this->setMedia();
            }
        }
    

  • administrators

    Le code à corriger a été changé afin de ne pas interférer avec certains contrôleurs (Category avec les scènes activés par exemple), qui implémentent du code dans setMedia() pour lequel init() doit avoir été exécuté au préalable (Product::initPricesComputation())


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.