HybridAuth
Что я делаю не так?
Хочу изменить поле address в профиле.
Вызов сниппета:
Хочу изменить поле 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>
*Meta, которой принадлежат facebook и instagram признана экстремистской в России
Комментарии: 8
Проблема в том, что поле затирается в базе и не изменяется через форму обновления профиля
На первый взгляд, всё ок — надо проверять.
Это только с полем address, или с другими так же?
Это только с полем address, или с другими так же?
проверял на полях city,age не работают, зато работает поле phone
и почему то режется поле username до 13 символов
и почему то режется поле username до 13 символов
Коммент удален:)
Проверил на тестовом сайте, те же проблемы
$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Закомментил эти строки, все заработало:)
Но не понял, почему такая замена.
И может можно другим путем решить.
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; }
Переменная $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; }
Вопрос возможно не по теме, но у меня наоборот все работает как надо, но поле phone цеплять никак не хочет, как заставить его цеплять телефон из ВК и почту из гугла.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.