XF 2.1 Custom Field, изменение кастомных полей юзеров

Версия XenForo
2.1.2

Flin007

Проверенные
Сообщения
12
Реакции
5
Баллы
140
Всем привет друзья!

Мне нужно было реализовать изменение пользовательского поля по user_id
Собственно получить данные этого поля могу при помощи XenForo API

PHP:
$user = \XF::finder( 'XF:User' )->where( 'username', $getUsername )->fetchOne( );
$customField     = $user->Profile->custom_fields->customField;

Но если мне нужно сбросить это поле я использую SQL запрос

PHP:
$db->query( '
        UPDATE xf_user_field_value
        SET field_value = ?
        WHERE xf_user_field_value.user_id = ?
        AND xf_user_field_value.field_id = CAST(0x68776964 AS BINARY)',
        [ $newCustomField, $userId ]
    );

Оказалась следующая проблема, что в базе данных поле то меняется, но в админке ничего не меняется, как и у самого юзера соответственно.
Поэтому вопрос, есть ли какой-нибудь встроенный метод изменения полей, что б данные сразу обновлялись в админке?
Или как это правильнее реализовать?

На крайняк я конечно могу брать значение тоже по SQL, что бы всегда иметь актуальные данные, но вообще это как то странно, да?
 
Прямые запросы в базу не рекомендуется делать, если вы не знаете, как устроен движок. Ищите код, отвечающий за смену доп полей и вставляйте его к себе.
 
в админке ничего не меняется, как и у самого юзера соответственно.
Потому что Ксен кеширует значения кастомных полей в записи пользователя в одной из таблиц, чтобы постоянно в базу не бегать.
 
Flin007, это не API. API вот:
И ещё 1
Спасибо, решил проблему

PHP:
require( 'forum/src/XF.php' );
XF::start( $fileDir );
$client = new \GuzzleHttp\Client( );

$user = \XF::finder( 'XF:User' )->where( 'username', $getUsername )->fetchOne( );
$userHwid     = $user->Profile->custom_fields->hwid;
$userId     = $user->user_id;

empty( $userHwid ) ? '' : exit( '4' );

$client->post('http://moysait.ru/forum/api/users/'.$userId.'/', [
        'headers' => [
            'XF-Api-Key' => 'wd2YdFCyJh8wUpHpo_rirnZ29GDTANTO',
            'XF-Api-User' => 2
        ],
        'form_params' => [
            'custom_fields[hwid]' => $getHwid
        ]
    ]);
 
Вы вместо вызова метода решили сами себе отправлять запрос на апишку?) Оригинально
Согласен, глупо) Я еще обязательно изчу метод обновления кастомных полей, который вы подсказали что б за зря апишку не юзать, просто нужно было срочно наладить)

Я как реализую правильно и это решение скину, мало ли кому пригодится)
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу