HybridAuth

Что я делаю не так?
Хочу изменить поле address в профиле.
Вызов сниппета:
[[!HybridAuth? &groups=`Покупатели` &action=`getProfile` &providers=`Vkontakte,Google,Yandex,facebook*,Twitter` &requiredFields=`email,fullname` &profileFields=`username,email:50,fullname:50,phone:12,address`]]
Кусок чанка, где использую поле
<tr class="control-group[[+error.address:notempty=` error`]]">
<td class="control-label" align="right">[[%ha.address]]</td>
<td class="controls">
<input type="text" name="address" value="[[+address]]" />
</td>
</tr>
Евгений Секерин
14 января 2013, 17:40
modx.pro
1 128
0

Комментарии: 8

Евгений Секерин
14 января 2013, 21:43
0
Проблема в том, что поле затирается в базе и не изменяется через форму обновления профиля
    Василий Наумкин
    14 января 2013, 22:48
    0
    На первый взгляд, всё ок — надо проверять.

    Это только с полем address, или с другими так же?
      Евгений Секерин
      14 января 2013, 23:11
      0
      проверял на полях city,age не работают, зато работает поле phone
      и почему то режется поле username до 13 символов
        Евгений Секерин
        14 января 2013, 23:37
        0
        Коммент удален:)
          Евгений Секерин
          15 января 2013, 00:00
          0
          Проверил на тестовом сайте, те же проблемы
          Евгений Секерин
          15 января 2013, 09:50
          0
          $expr = '/[^-_a-zа-яё0-9@\s\.\,\:\/\\\]+/iu';
          $sanitized = preg_replace($expr, '', $string);
          return substr($sanitized, 0, $length);
          в в функции Sanitize в components / hybridauth / model / hybridauth / hybridauth.class.php
          Закомментил эти строки, все заработало:)
          Но не понял, почему такая замена.
          И может можно другим путем решить.
            inogda
            21 мая 2013, 09:55
            0
            return substr($sanitized, 0, $length);
            Переменная $length почему то равна 0 и естественно substr() в итоге возвращает пустую строку…
            По идее в &profileFields можно указать максимальную длину значений, через двоеточие. Например, &profileFields=`username:25,fullname:50,email:50,address:90`.
            и тогда думал переменная $length будет равна указанному значению, но после вызова
            [[!HybridAuth? &profileFields=`username:25,email:40,fullname:40,phone:12,address:90,country:30,city:30` &requiredFields=`username,email,fullname,phone` &action=`getProfile`]]
            все равно $length=0
            В итоге заменил
            return substr($sanitized, 0, $length);
            на
            if (strlen($sanitized) > $length and $length > 0) { return substr($sanitized, 0, $length); } else { return $sanitized; }
            Impulse
            15 мая 2019, 14:16
            0
            Вопрос возможно не по теме, но у меня наоборот все работает как надо, но поле phone цеплять никак не хочет, как заставить его цеплять телефон из ВК и почту из гугла.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              8