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

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

  1. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
  2. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Warning: Invalid argument supplied for foreach()
    Пока, что нет ничего, там будут подтягиваться данные позже, поэтому сейчас не могу увидить(
    Еще такой вопрос по перекодировке возник и проблема, есть вот это
    % for s in 0..50 %}
    <?php foreach ($0..50 as $s) { ?>
    так возникает ошибка из-за чисел..
     
  3. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
  5. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    foreach ($0..50 as $s) - что это вообще за выражение такое? Я в первые в жизни такое вижу. Разве так можно?
     
  6. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Это он непонимания твига

    Попытка интерпретации из одного языка в другой
     
  7. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    В доках по TWIG написано так:

    Если вам нужно перебрать последовательность чисел, вы можете использовать оператор: ..
    Код:
    {% for s in 0..50 %}
        * {{ s }}
    {% endfor %}
    Приведенный выше фрагмент кода выведет все числа от 0 до 50.

    Понял
     
  8. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Ну так было написано в одном из модулей, который я пытаюсь перевести в tpl, там select с возможностю выбора от 0 до 50.
    Вот правильная интерпретация, оставляю тут, может кому пригодится из начинающих.

    for ($s = 0; $s <= 50; $s++)
     
    Последнее редактирование: 8 авг 2018
    Ravilr нравится это.
  9. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    а вот такая строчка?
    Код:
    {{ (dealers_list.selected_id == price.price_id) ? 'selected' : '' }}
    воот так сделал
    Код:
    <?php echo ($dealers_list['selected_id'] == $price['price_id'] ? 'selected' : ''); ?>
    но почему то ошибка
    Код:
    Undefined index: selected_id
    Если перекодирую то, что написал через спец сервис опять в twig, то получается вот так
    Код:
    {{ dealers_list['selected_id'] == price['price_id'] ? 'selected' : '' }}
    и подставляю ее для 3-й версии - все работает, странно...
     
  10. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    Потомучто:
    Код:
    {{ foo.bar }}
    {{ foo['bar'] }}
    Наиболее лаконичный вариант:
    Код:
    {{ dealers_list.selected_id == price.price_id ? 'selected' }}

    Прочитайте про другие операторы: https://twig.symfony.com/doc/2.x/templates.html#other-operators
     
  11. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Наиболее лаконичный вариант:
    Код:
    {{ dealers_list.selected_id == price.price_id ? 'selected' }}

    Этот вариант работает для 3-й версии, пробовал, у меня задача перевести то в tpl, вот перевел
    Код:
    <?php echo ($dealers_list['selected_id'] == $price['price_id'] ? 'selected' : ''); ?>
    Но тут почему то не работает (ошибка выше), вроде как правильный синтаксис. или нет?
     
  12. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    Правильный:
    PHP:
    <?php echo ($dealers_list['selected_id'] == $price['price_id']) ? 'selected' ''?>

    Нафига?
    Я то думал тут новичку в твиге помогаю разобраться, а тут деградирование в обратную сторону...:cool:
     
    Sanik нравится это.
  13. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Спасибо, закрывающую кавычку не туда поставил) все вроде как работает, за исключением того, что при выборе селекта выкидывает из админки, но тут думаю может дело уже не в этом.
    Нет нужного модуля для версии 2..х, поэтому и перевожу в tpl, в twig легче, так как есть уже множество сервисов для этого, а с обраткой проблемы)
    Вот еще это не понимаю как перевести, там множество вложений
    Код:
                                    {% if dealers_list.smss.name_price_upd[price.price_id] is defined %}
                                        {% set sms_id = dealers_list.smss.name_price_upd[price.price_id]['cmd_id'] %}
                                    {% endif %}
    был бы благодарен за помощь
     
  14. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    А не проще модуль для 2.3 перевести для 3.0 там не так сложно как кажется.
    Модули для 2.3 по многим параметрам совпадают на 99% кроме TWIG.
    Но и в твиг перевести как вы уже поняли, плёвое дело.
     
  15. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Данный модуль есть только для 3-х версий, мне как раз таки он нужен на 2.3, осталось некоторые строчки перевести
     
  16. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Всеравно не идет, остается та же ошибка, просто изначально я не сохранил настройки.., вроде правильный синтаксис.., когда полностью убираю эту строчку - тогда ишибки нет, но не сохраняется активный селект
     
  17. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    Спасибо всем за помощь, со всем почти разобрался, осталось конвертировать только вот эти строчки в php, они сложные по структуре...
    Там еще есть smss, массив через дамп смотреть?
    Вот в контроллере все упоминания по данным переменным слбрал

    $data['dealers_list'] = $price_list;
    $data['current_tab'] = isset($this->request->get['tab']) ? $this->request->get['tab'] : 'dealers_list';
    $data['dealers_list']['selected_id'] = $categories_data['selected_id'];

    return array('prices' => $prices->rows, 'smss' => $this->model_extension_sms_import->getSmssQueue());

    return $this->model_extension_sms_import->setCommandResult($data['cmd_id'], $k, $data['price_id'], false, 'name_price_upd');
    $this->model_extension_sms_import->addSms(array('name_price_upd' => array($data['price_id'])), null, false, 0, 25);
    function name_price_upd($data) {

    [price.price_id] - тут думаю понятно, должно быть так [$price['price_id']]

    я вот сделал так

    $dealers_list['smss']['name_price_upd'][$price['price_id']]

    Не знаю как правильно и куда переменную smss запихнуть
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    ничего не понятно

    $data['dealers_list'] = $price_list;

    Что в $price_list?
     
  19. Sanik

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

    Сообщения:
    299
    Симпатии:
    3
    функция

    $price_list = $this->prepareDealersList();
    public function prepareDealersList() {
     
  20. optimlab

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

    Сообщения:
    922
    Симпатии:
    240
    Пока тут на форуме ищете ответы, уже бы обновили движок с 2.3 до 3.0 и перепрошили все недостающие модули для тройки..