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 724

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

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

    Это только с полем address, или с другими так же?
    Евгений Секерин
    15 января 2013, 09:50
    $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
      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
      Вопрос возможно не по теме, но у меня наоборот все работает как надо, но поле phone цеплять никак не хочет, как заставить его цеплять телефон из ВК и почту из гугла.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8