Jump to content

Обновление с 1.7.0.6 на 1.7.1.1


Recommended Posts

Здравствуйте всем.

Задался я желанием обновить свою престу с 1.7.0.6 на что то новое.

Моё стремление упёрлос в сразу же в сплошные ошибки как с модулем 1-click так и с manual update.

И в том и в том случае у меня выходила ошибка 500. Написал в поддержку для 1-клика, долго меняли статусы но ничего пока не изменилось для решения. 

 

Поэтому делюсь своим опытом, может кому-то пригодится. 

 

Делал все согласно http://doc.prestashop.com/display/PS16/Manual+update который подходит и для 1.7 версии

 

1. Функцию конструктора в файл classes\controller\FrontController.php  

 
/**
     * Controller constructor.
     *
     * @global bool $useSSL SSL connection flag
     */
    public function __construct()
    {
        $this->controller_type = 'front';
 
         global $useSSL;
 
        parent::__construct();
 
        if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) {
            $this->ssl = true;
        }
 
        $this->guestAllowed = Configuration::get('PS_GUEST_CHECKOUT_ENABLED');
 
        if (isset($useSSL)) {
            $this->ssl = $useSSL;
        } else {
            $useSSL = $this->ssl;
        }
 
        $this->objectPresenter = new ObjectPresenter();
        $this->cart_presenter = new CartPresenter();
 
 
        $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl');
        $this->stylesheetManager = new StylesheetManager(
            array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_),
            new ConfigurationAdapter()
        );
        $this->javascriptManager = new JavascriptManager(
            array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_),
            new ConfigurationAdapter()
        );
        $this->cccReducer = new CccReducer(
            _PS_THEME_DIR_.'assets/cache/',
            new ConfigurationAdapter(),
            new Filesystem()
        );
    }

 

Немножко изменил

/**
     * Controller constructor.
     *
     * @global bool $useSSL SSL connection flag
     */
    public function __construct()
    {
        $this->controller_type = 'front';
 
         global $useSSL,$smarty;
 
        parent::__construct();
 
        if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) {
            $this->ssl = true;
        }
 
        $this->guestAllowed = Configuration::get('PS_GUEST_CHECKOUT_ENABLED');
 
        if (isset($useSSL)) {
            $this->ssl = $useSSL;
        } else {
            $useSSL = $this->ssl;
        }
 
        $this->objectPresenter = new ObjectPresenter();
        $this->cart_presenter = new CartPresenter();
 
$this->context->smarty=$smarty;
        $this->templateFinder = new TemplateFinder($this->context->smarty->getTemplateDir(), '.tpl');
        $this->stylesheetManager = new StylesheetManager(
            array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_),
            new ConfigurationAdapter()
        );
        $this->javascriptManager = new JavascriptManager(
            array(_PS_THEME_DIR_, _PS_PARENT_THEME_DIR_, _PS_ROOT_DIR_),
            new ConfigurationAdapter()
        );
        $this->cccReducer = new CccReducer(
            _PS_THEME_DIR_.'assets/cache/',
            new ConfigurationAdapter(),
            new Filesystem()
        );
    }
 
т.к. почему то в массиве $this->context->smarty всегда приходил NULL после чего вылетала 500ошибка
 
Потом вроде все шло пристойно, но в конце начался сыпатся вывод Xml результата. Виной стал открытый и не закрытый один узел в файле install\upgrade\upgrade.php 
 
Было 
$result = '<?xml version="1.0" encoding="UTF-8"?>';
if (empty($upgrade->hasFailure())) {
    if (!isset($_GET['action']) || 'UpgradeComplete' === $_GET['action']) {
        Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0);
        Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1);
        Configuration::updateValue('PS_VERSION_DB', _PS_INSTALL_VERSION_);
    }
 
    $result .= '<action result="ok" id="">'."\n";
    foreach ($upgrade->getInfoList() as $info) {
        $result .= $info."\n";
    }
 
    foreach ($upgrade->getWarningList() as $warning) {
        $result .= $warning."\n";
    }
 
} else {
    foreach ($upgrade->getFailureList() as $failure) {
        $result .= $failure."\n";
    }
}

 

Поменял на 

$result = '<?xml version="1.0" encoding="UTF-8"?>';
if (empty($upgrade->hasFailure())) {
    if (!isset($_GET['action']) || 'UpgradeComplete' === $_GET['action']) {
        Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0);
        Configuration::updateValue('PS_NEED_REBUILD_INDEX', 1);
        Configuration::updateValue('PS_VERSION_DB', _PS_INSTALL_VERSION_);
    }
 
    $result .= '<actions result="ok" id="">'."\n";
    foreach ($upgrade->getInfoList() as $info) {
        $result .= $info."\n";
    }
 
    foreach ($upgrade->getWarningList() as $warning) {
        $result .= $warning."\n";
    }
$result.='</actions>'."\n";
} else {
    foreach ($upgrade->getFailureList() as $failure) {
        $result .= $failure."\n";
    }
}
 
И вроде все получилось.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...