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
502
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 цеплять никак не хочет, как заставить его цеплять телефон из ВК и почту из гугла.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.