Перекодировать строчку из tpl в twig

Тема в разделе "Общие вопросы", создана пользователем Sanik, 26 дек 2017.

  1. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Адаптирую модуль под 3 версию. Осталось всего две строчки переписать типа:
    <?php if($display == 'display_list') echo ' selected="selected"';?>
    Тут застрял.. Как такую строчку переписать под 3 версию в twig?
    Спасибо заранее всем.
     
    DanMir нравится это.
  2. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Что то типа этого!
    Код:
    {% if display == 'display_list' %} selected="selected" {% endif %}
     
    Sanik нравится это.
  3. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Спасибо!
     
  4. alf89

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

    Сообщения:
    79
    Симпатии:
    9
    я пользуюсь вот этим сервисом https://phptotwig.com/
     
    Sanik нравится это.
  5. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Спасибо, очень полезный сервис. У меня только один вопрос еще возник... Посмотрел файлы twig опенкарт 3 и там вот такая строчка например {{ type_product_list['text'] }} немножко по другому выглядит, без квадратных скобок и кавычек, а через точку, вот так{{ type_product_list.text }}. Работают оба варианты, но не знаю как правильно должно быть.
     
    Последнее редактирование: 27 дек 2017
  6. megaCart

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

    Сообщения:
    78
    Симпатии:
    4
    а почему print_r() на twig не работает.
     
  7. megaCart

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

    Сообщения:
    78
    Симпатии:
    4
  8. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Что бы не создавать новой темы.. Столкнулся с проблемой адаптации модуля под 3 версию, с админкой справился, но ошибка в каталоге следущая:
    Код:
    Fatal error: Uncaught exception 'Twig_Error_Loader' with message 'Unable to find template "extension/module/product_listtpl.twig"
    Я так понимаю дело в окончании tpl, ибо product_listtpl.twig, а должно быть product_list.twig
    В контроллере есть код вот такой:
    Код:
                    if ( version_compare(VERSION, '2.2.0.0', '<') ) {
                        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/' .$this->path . '.tpl')) {
                            return $this->load->view($this->config->get('config_template') . '/template/' .$this->path . '.tpl', $data);
                        } else {
                            return $this->load->view('default/template/' .$this->path . '.tpl', $data);
                        }
                    } else {
                        return $this->load->view($this->path, $data);
                    }
    Как эти строчки для 3 версии переделать? Искал подобное в ранних версиях, что бы сравнить с новыма контроллерами - но нигде нет вот такого "$this->path".
    Буду благодарен, кто подскажет.
     
  9. karpov

    karpov Продвинутый пользователь

    Сообщения:
    1.519
    Симпатии:
    241
    удалить полностью и прописать свою одну строку по примеру из любого модуля. Никаких tpl быть не должно
     
  10. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Спасибо, разобрался.
    Еще один вопрос по теме, пытаюсь конвертировать tpl в twig файл модуля в сервисе (ссылка выше) вот такая строчка
    Код:
    <input type="checkbox" name="my_module[store_id][]" value="0" <?php echo isset($my_module['store_id']) && in_array(0, $my_module['store_id']) ? 'checked="checked" ' : ''; ?> />
    конвертирую в
    Код:
    <input type="checkbox" name="my_module[store_id][]" value="0" {{ my_module['store_id'] is defined and in_array(0, my_module['store_id']) ? 'checked="checked" ' : '' }} />
    Но выдает ошибку на этой строчке
    Код:
    Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "in_array" function in "extension/module/my_menu.twig" at line 133
     
  11. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    G великая вещь
    {% if myVar in someOtherArray|keys %}
     
    Sanik нравится это.
  12. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Что значит G?
    Не понял это строчку...
     
  13. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    а что не понятно?
    приведен пример, или вы хотите чтобы я за вас конвертнул код?

    G == Г
     
  14. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Разные варианты перепробовал, всеравно ошибка вылазит. Вот этот
    Код:
    <?php foreach ($stores as $store) { ?>
    <div class="checkbox">
    <label>
    <input type="checkbox" name="my_module[store_id][]" value="<?php echo $store['store_id']; ?>" <?php echo isset($my_module['store_id']) && in_array($store['store_id'], $my_module['store_id']) ? 'checked="checked" ' : ''; ?> />
    <?php echo $store['name']; ?>
    </label>
    </div>
    <?php } ?>
    
    конвертирую в
    Код:
                          {% for store in stores %}
                          <div class="checkbox">
                            <label>
                              <input type="checkbox" name="my_module[store_id][]" value="{{ store['store_id'] }}" {{ my_module['store_id'] is defined and in_array(store['store_id'], my_module['store_id']) ? 'checked="checked" ' : '' }} />
                              {{ store['name'] }}
                            </label>
                          </div>
                          {% endfor %}
    или
    Код:
                          {% for store in stores %}
                          <div class="checkbox">
                            <label>
                              <input type="checkbox" name="my_module[store_id][]" value="{{ store.store_id }}" {{ my_module.store_id  and  in_array(store.store_id, my_module.store_id ? 'checked="checked" ' : '') }} />
                              {{ store.name }}
                            </label>
                          </div>
                          {% endfor %}
    получаю
    Код:
    atal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "in_array"
     
    Последнее редактирование: 4 янв 2018
  15. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    я вам показал пример как определить in_array

    Почему вы продолжаете гнуть свою линию?
    Хотите чтоб это сделали за вас? А смысл?
     
    Sanik нравится это.
  16. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Я не хочу что бы за меня всегда кто то что то делал, я весь день на этом застрял, весь движок 2.3 с 3 версией сравнивал в поисках похожей строчки, что бы примерно понять правильный синтаксис, в поисковиках по запросу Twig: in_array тоже не помогло, перечитал все, но подобного строчки нигде не нашел. Мне просто не понятно, зачем по вашему примеру проверка if если в строчке <?php echo isset($my_module['store_id']) && in_array(0, $my_module['store_id']) ? 'checked="checked" ' : ''; ?> echo внутри массива ?
    Похоже зря я затеял переходить на 3(. В tpl намного проще все было разбирать, да и инфы много на разных источниках.
     
  17. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    потому что у вас записано краткой записью

    {{ my_module.store_id is defined AND myVar in someOtherArray|keys? 'dddd': 'eee' }}

    Сложно?
     
    Sanik нравится это.
  18. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Извиняюсь, так правильно?
    Поставлю на заметку, эту строку
    Код:
    <?php echo isset($my_module['store_id']) && in_array($store['store_id'], $my_module['store_id']) ? 'checked="checked" ' : ''; ?>
    конвертировал в
    Код:
    {{ my_module.store_id and store.store_id in my_module.store_id ? 'checked="checked"' : '' }}
    Вроде как из этой строки ошибка исчезла, но проверить пока что не могу, так как там много подобных строк нужно править, но если это решение правильно - то уже пойму как дальше делать. Спасибо за помощь.
     
  19. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Извините, вы умеете читать?
    Не правильно!
     
  20. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    именно так все и работает, как выше сделал.