Ошибка на странице "Контакты" при обновлении на 3.0.3.1

Тема в разделе "Установка и обновление", создана пользователем SkyLett, 24 янв 2019.

  1. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Добрый день всем.
    Обновился с 3.0.2.0 до 3.0.3.1 (rs.1) делал дела, всё вроде работало как нужно, даже модули которые не хотели работать ранее. Но тут случайно вошел в контакты и мне выдало ERROR500. Включил отображение ошибок и вот что:
    Код:
    Fatal error: Uncaught Twig_Error_Syntax: Unexpected "else" tag (expecting closing tag for the "if" tag defined near line 159) in "butik/template/information/contact.twig" at line 174. in /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Parser.php:172 Stack trace: #0 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/TokenParser/If.php(43): Twig_Parser->subparse(Array) #1 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Parser.php(188): Twig_TokenParser_If->parse(Object(Twig_Token)) #2 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/TokenParser/If.php(34): Twig_Parser->subparse(Array) #3 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Parser.php(188): Twig_TokenParser_If->parse(Object(Twig_Token)) #4 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Parser.php(100): Twig_Parser->subparse(NULL, false) #5 /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Environment.php(619): Twig_P in /var/www/p485060/data/www/pc-expert54.ru/system/library/template/Twig/Parser.php on line 172
    expecting closing tag for - указывает на незакрытый тег в файле, но там всего 30 строк. Или я не там ищу?
    форма: тык
     
  2. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Пришлось вновь откатываться на бекап, люди, не забывайте делать бекап)
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    Открываем \system\tweak.ocmod.xml

    и делаем кооректироваки после строки
    Код:
    <file path="catalog/view/theme/*/template/information/contact.twig">
    И не забываем обновлять не на рабочем магазине!!!! Тщательно проверять и прочее.
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    А если быть точнее, то наверно просто изменить на
    Код:
    <file path="catalog/view/theme/default/template/information/contact.twig">
    и не забыть обновить кеш модификаторов.
     
  5. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    К сожалению ошибка осталась, можно эту часть вовсе удалить? Подготовку к 152 ФЗ, я могу добавить её отдельным патчем?
     
  6. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Удалил из патча код:

    HTML:
    <!-- Приводим немного сайт к 152 ФЗ     -->   
    <file path="catalog/controller/information/contact.php">
    
        <operation>
            <search><![CDATA[
                if (isset($this->error['name'])) {
            ]]></search>
            <add position="before"><![CDATA[
            if (isset($this->error['warning'])) {
                $data['error_warning'] = $this->error['warning'];
            } else {
                $data['error_warning'] = '';
            }
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                $data['comment'] = $this->config->get('config_comment');
            ]]></search>
            <add position="after"><![CDATA[
            if ($this->config->get('config_account_id')) {
                $this->load->model('catalog/information');
    
                $information_info = $this->model_catalog_information->getInformation($this->config->get('config_account_id'));
    
                if ($information_info) {
                    $data['text_agree'] = sprintf($this->language->get('text_agree'), $this->url->link('information/information/agree', 'information_id=' . $this->config->get('config_account_id'), true), $information_info['title'], $information_info['title']);
                } else {
                    $data['text_agree'] = '';
                }
            } else {
                $data['text_agree'] = '';
            }
    
            if (isset($this->request->post['agree'])) {
                $data['agree'] = $this->request->post['agree'];
            } else {
                $data['agree'] = false;
            }
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                return !$this->error;
            ]]></search>
            <add position="before"><![CDATA[
            // Agree to terms
            if ($this->config->get('config_account_id')) {
                $this->load->model('catalog/information');
    
                $information_info = $this->model_catalog_information->getInformation($this->config->get('config_account_id'));
    
                if ($information_info && !isset($this->request->post['agree'])) {
                    $this->error['warning'] = sprintf($this->language->get('error_agree'), $information_info['title']);
                }
            }
            ]]></add>
        </operation>
    
    </file>
    
    <file path="catalog/view/theme/*/template/information/contact.twig">
    
        <operation>
            <search><![CDATA[
                <div class="row">{{ column_left }}
            ]]></search>
            <add position="before"><![CDATA[
            {% if error_warning %}
            <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}</div>
            {% endif %}
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                <div class="buttons">
            ]]></search>
            <add position="before"><![CDATA[
            {% if text_agree %}
            <div class="buttons">
              <div class="pull-right">{{ text_agree }}
                {% if agree %}
                <input type="checkbox" name="agree" value="1" checked="checked" />
                {% else %}
                <input type="checkbox" name="agree" value="1" />
                {% endif %}
                &nbsp;
                <input type="submit" value="{{ button_submit }}" class="btn btn-primary" />
              </div>
            </div>
            {% else %}
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                </form>
            ]]></search>
            <add position="before"><![CDATA[
            {% endif %}
            ]]></add>
        </operation>
    
    </file>
    
    Форма и раздел заработали, но появилась другая проблема: при сохранении товара ругается на БД:
    Код:
    Fatal error: Uncaught Exception: Error: Table 'p485060_shop.oc_product_addtab' doesn't exist<br />Error No: 1146<br />DELETE FROM oc_product_addtab WHERE product_id = '131' in /var/www/*/data/www/pc-expert54.ru/system/library/db/mysqli.php:40 Stack trace: #0 /var/www/*/data/www/pc-expert54.ru/system/library/db.php(45): DB\MySQLi->query('DELETE FROM oc_...') #1 /var/www/*/data/www/storage/modification/admin/model/catalog/product.php(155): DB->query('DELETE FROM oc_...') #2 /var/www/*/data/www/storage/modification/system/engine/loader.php(248): ModelCatalogProduct->editProduct('131', Array) #3 /var/www/*/data/www/pc-expert54.ru/system/engine/proxy.php(47): Loader->{closure}(Array, Array) #4 /var/www/*/data/www/storage/modification/admin/controller/catalog/product.php(75): Proxy->__call('editProduct', Array) #5 /var/www/*/data/www/storage/modification/system/engine/action.php(79): ControllerCatalogProduct->edit() #6 /var/www/*/data/www/pc-expert54.ru/admin/controller/startup/ro in /var/www/*/data/www/pc-expert54.ru/system/library/db/mysqli.php on line 40
    Как быть с ним теперь?) уже хочу снести напрочь таблицы и восстановить старые, но очень много будет потеряно работы
     
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    Не может быть. Если обновили кеш, то ошибка должна была пропасть. Возможно кеш твиг включен у вас тоже.

    Тем самым, в шаблоне реализован функционал, но вы его вырезали, т.е форма опять не совсем рабочая, хоть видимо и отправляет письма.

    Ну вы посмотрите на ошибку? Ведь ругается на отсутствие таблицы! Как вы обновляли? Базу обновили? Или как?
     
  8. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Скачал обновление, закинул в корень, установил из директории /install, а был другой вариант? про базу не указано было к сожалению
     
  9. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    Ну когда запустили инстал вы установили или обновили? Там же базу обновляет. Текущие таблицы не должны были удалится.
     
  10. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    обновил
    Базу я не трогал, бекап старой базы до обновления естественно есть, отсюда и непонятки. Если я восстанавливаю бекап сайта но не трогаю базу - ошибка есть, а вот восстановить сразу с сайтом базу я вчера не додумался, а сегодня я за другим компом, дампа тут нет (не сохранял в облако, только локально). Так вот я думаю, что где-то что-то при обновлении удалилось или изменилось, но найти не могу, тупой слишком
     
  11. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    Т.е получается при обновлении дополнительные таблицы удалились? Стандартные с товарами остались хоть?? )))
    Можно конечно и дополнительные таблицы и вручную перенести потом если что.
    А вообще структура базы данных не сильно изменилась. Там пару таблиц добавилось для нового модуля, да и все вроде. Нужно сравнить... при необходимости
     
  12. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Да всё осталось, я даже могу создать новый товар, а вот отредактировать его после создания уже не выйдет)
     
  13. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    В общем то решено! Этой таблицы и правда не было в базе, а всё потому, что при обновлении отключился модуль от шаблона Butik Theme который её собственно и создавал! Таблица oc_product_addtab а создает её модуль "Butik Theme: Дополнительные вкладки в карточке товара", посему запрос то остался а таблицы нема. После включения естественно таблица была добавлена (хоть я ей и не пользуюсь), и всё работает как нужно.
    Теперь остался нерешенным вопрос о добавлении вырезанного патча без последствий, не подскажешь?)
     
  14. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
     
  15. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Пробовал, не помогло, а если учесть что у меня директория шаблона не default a butik я пробовал и так, и так же не помогло)
     
  16. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    Не веррю. ))) Никакой бутик вместо дефайлт ставить не нужно. Путь меняется для того, чтобы изменения не трогали шаблон бутик. Можно вообще удалить участок в окмоде, который делает изменения в шаблоне contact.twig так как в бутике, все изменения уже есть изначально.
     
  17. SkyLett

    SkyLett Пользователь

    Сообщения:
    51
    Симпатии:
    1
    Так я удалил же, выше писал, если удалить то всё норм конечно)
     
  18. Ravilr

    Ravilr Специалист

    Сообщения:
    4.215
    Симпатии:
    1.451
    А я вам писал, что удалить нужно не все, а то что касается шаблона
    Код:
    <file path="catalog/view/theme/*/template/information/contact.twig">
    
        <operation>
            <search><![CDATA[
                <div class="row">{{ column_left }}
            ]]></search>
            <add position="before"><![CDATA[
            {% if error_warning %}
            <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}</div>
            {% endif %}
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                <div class="buttons">
            ]]></search>
            <add position="before"><![CDATA[
            {% if text_agree %}
            <div class="buttons">
              <div class="pull-right">{{ text_agree }}
                {% if agree %}
                <input type="checkbox" name="agree" value="1" checked="checked" />
                {% else %}
                <input type="checkbox" name="agree" value="1" />
                {% endif %}
                &nbsp;
                <input type="submit" value="{{ button_submit }}" class="btn btn-primary" />
              </div>
            </div>
            {% else %}
            ]]></add>
        </operation>
    
        <operation>
            <search><![CDATA[
                </form>
            ]]></search>
            <add position="before"><![CDATA[
            {% endif %}
            ]]></add>
        </operation>
    
    </file>
    Собственно если вас все устраивает, то можете махнуть рукой.."и так сойдет..."