Кастомное text-поле контакта Принято

1

В custom_fields.php имеется следующее:

  2 => waContactTextField::__set_state(array(
     'id' => 'summary',
     'options' => 
        array (
          'app_id' => 'rifmach',
          'storage' => 'waContactDataTextStorage',
          'required' => false,
          'allow_self_edit' => true,
          'unique' => false
        ),
     'name' => 
        array (
          'en_US' => 'Summary',
          'ru_RU' => 'Сводка',
        ),
     '_type' => 'waContactTextField',
  )),

Проверил, значения сохраняются в таблице wa_contact_data_text. Вроде всё ок. Но всё равно длинный текст обрезается. Устал уже методом подбора работать, поэтому лучше спрошу. Это я что-то делаю не так, или имеется какой-то баг?

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

  • +1
    Евгений Леман Евгений Леман 25 мая 2018 16:20 #

    Собсна в качестве временной меры для лечения добавил метод save() из waContactDataStorage в waContactDataTextStorage с удалением строк:

    if(strlen($row['value']) > 255) {
        $row['value'] = substr($row['value'], 0, 255);
    }

    Персональный проект, могу себе позволить. Но такого быть не должно. Всё же это баг.

    • +1
      Евгений Леман Евгений Леман 27 мая 2018 10:15 #

      Именно поэтому я и использовал waContactDataTextStorage, а не waContactDataStorage. Если присмотритесь, то отличие у этого хранилища только в том, что у `value` стоит тип text. То есть явно оно для этих целей и создавалось.

      • 0
        EnsoStudio EnsoStudio 27 мая 2018 11:32 #

        Изменения в стандартных файлах удалятся при обновлении т.ч. в любом случае придется наследовать либо от waContactDataTextStorage и заменять 'storage' => 'waContactDataTextStorage' в custom_fields.php, либо от waContactDataStorage наследовать waContactDataTextStorage и разместить в /lib/custom/.


        • +2
          Евгений Леман Евгений Леман 27 мая 2018 11:45 #

          Помоему вы не поняли смысла и посыла темы. Как я уже сказал "проект персональный". Могу себе позволить подобный выход из ситуации. И знаю обо всех его минусах и способах решения без проблем с обновлениями. Посыл заключается в том, что это баг. Явно waContactDataTextStorage создавался именно для таких целей. Но возможно на тот момент в waContactDataStorage еще не было этого насильного ограничения по длине и тогда всё работало. Потом исправили там недочет и тем самым сделали новый. Мой долг сообщить :)

          Еще из недостатков использования waContactDataTextStorage - невозможность получить значения таких полей внутри коллекции. И если мне нужно, например, вывести 20 контактов на странице с выводом значения такого поля, то waContactsCollection не поможет. Нужно именно через new waContact() каждого. Это тоже выглядит как-то... как-то не так.

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

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