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

4

Уведомление в Телеграм и на e-mail содержало код 

{$customer->get("phone", "html")|escape}

и номер приходил в формате +7 (900) 123-45-67

После обновления стало прилетать

 <a class="inline" href="tel:+79001234567">+7 (900) 123-45-67</a>

Пришлось делать

{$customer->get("phone", "html")|strip_tags}

чтобы сохранить формат полностью как ранее, но без сюрпризов, либо

{$customer->get("phone", "default")}

но так прилетают только цифры и лучше резать теги конечно же.




Что случилось? Теперь так всегда будет? В шаблонах, например my.profile.html, телефон формата

{$customer->get("phone", "html")}

теперь везде этой гиперссылкой стал оформлен.

Аналогично теперь и в печатных формах, где подчеркивание мягко говоря портит вид документа для печати. Поправил конечно же, но сюрприз однако.

Спасибо видимо добрым людям за эту идею https://support.webasyst.ru/forum/9555/klikabelnyy-telefon---kak/ ???

:)))

7 комментариев

  • +2

    Ага. У меня тоже были жалобы, что в печатной форме ни с того, ни с сего телефоны поплыли

  • +2

    Такой код написан неверно:

    {$customer->get("phone", "html")|escape}

    Если вы запрашиваете значение в формате "html", то применять к получаемому результату модификатор |escape не нужно, потому что экранирование результата уже выполняется методом get() при указании формата "html".

    • +2
      replicant replicant 16 мая 2023 13:19 #

      Да неверно (просто скопировал как есть с какого-то уведомления), но к сути проблемы это отношения не имеет.

      А что за формат такой top? C html понятно, хотя про него в шпаргалке ни слова, что странно, но есть какой-то top и на выходе это массив, содержащий ровно то же самое, что и

      {$customer->get("phone", "html")}

      Вот скрин шпаргалки

      Для чего нужен этот top?

      • +2

        Поясните, что вы тут имеете в виду:

        Да неверно (просто скопировал как есть с какого-то уведомления), но к сути проблемы это отношения не имеет.

        • +2
          replicant replicant 16 мая 2023 15:25 #

          Вы сказали, что код написан неверно.
          Я ответил, что да, неверно, т.к. бегом скопировал его из шаблона сбоящего уведомления как есть, но это несущественно, т.к. на сам факт появления html-разметки в выводе номера телефона при таком формате это не влияет. Да и не будь этой ошибки в шаблоне, то изменения бы заметили не сразу, а тут из-за escape вывод посыпался.

          Затем был вопрос о шпаргалке и том, что в ней html нет, но есть top.
          Собственно мне уже не интересно что там с html будет т.к. с этим разобрался сразу же в момент появления о чем лишь просто проинформировал на форуме, потому что многие используют html формат за его пробелы и скобки в печатных формах и уведомлениях, где не всегда уместна разметка, но красиво читабельно написать номер - это важно.

          Мне интересно для чего нужен top? Где этот формат применяется и/или может быть использован?


        • +2

          Для чего нужен этот top?

          Формат 'default|top' означает необходимость получить первый номер телефона, отформатированный для использования в HTML-коде.

          • +1
            replicant replicant 16 мая 2023 15:27 #

            Ок, на клиенте с 2-мя номерами уже проверил. Из массива легче выдернуть нужный элемент, а строку формата html придется резать, что не всегда удобно.

            {$phone = $contact->get('phone', 'top')}
            {$phone[0]} - первый номер в html
            {$phone[1]|strip_tags} - второй номер без разметки 
            ну и т.п.

            Добавить комментарий

            Чтобы добавить комментарий, зарегистрируйтесь или войдите