XF 1.5 Как получить доп. поле пользователя средствами PHP?

Статус
В этой теме нельзя размещать новые ответы.

Михаил Ранго

Проверенные
Сообщения
644
Реакции
343
Баллы
11,065
Похожий вопрос уже был но на него никто не дал ответа и тему забыли возможно сейчас кто знает.
В дополнительных полях пользователя я создал 2 поля. Как получить их содержимое с помощью PHP? Рылся в гугле, нашел на оф форуме но не смог разобраться. Кэллбэк для моего случая не подходит так как я хочу сделать проверку из 2 полей. Кто сталкивался? Подскажите
 
snake007v, Меня интересует получение содержимого дополнительного поля [по его id] у пользователя

Ну так там есть и этот подход. Он конечно кривой, но вашу задачу решает.
PHP:
$userFieldModel = new XenForo_Model_UserField;
$values = $userFieldModel->getUserFieldValues($visitor['user_id']);
 
snake007v, Если бы информация по предоставленной мною ссылке помогла я бы не создавал тему. Я не разобрался в какой последовательности этот код пихать. По идее знаю как но в конце получаю пустую переменную значит не сработало. Может какой то хук нужен?
 
Exile, Работаю с дополнением оно работает без событий. Подключил свой php
/library/.../...
Работает все без проблем. Вот я и думаю для подобного криейта
Код:
XenForo_Model::create('XenForo_Model_UserField');
по моему нужно какое то подключение к движку а какое не знаю. Но почему то уверен что обычного подключения php как я это делаю не сработает. Думаю нужно событие. Это так?
 
Михаил Ранго, конечно нет. Движок вот так подключается:
PHP:
<?php

$startTime = microtime(true);
$fileDir = dirname(__FILE__);

require($fileDir . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');

XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);

// Тут ваш код
С путями к файлам аккуратнее.
 
snake007v, Я хочу сделать это плагином но не думал что подобная подробность так может повлиять на код? Плагин это только так чтобы выключать по необходимости сам то не сильно в нем нуждаюсь. Но желательно конечно же через плагин.

Exile, То есть мне этот код постоянно пихать в начало а потом уже
XenForo_Model::create('XenForo_Model_UserField');
и затем как описано на оф сайте?
PHP:
$userFieldModel = new XenForo_Model_UserField;
$values = $userFieldModel->getUserFieldValues($visitor['user_id']);
$myValue = $values['my_custom_field_id'];

OFFTOP

пардон, xf api не изучал

 
Вам все-равно нужно будет использовать описанный выше подход(скорее всего, поправьте кто опытнее).
Потому что фреймворк будет создавать экземпляр для актуального юзера, а тут нужны данные юзера по айди.

Михаил Ранго, это два фактически идентичных действия, просто с разным подходом.
Нет смысл их дублировать.
Вы бы попробовали, посмотрели что возвращает, а там уже открыли доку если что.
 
snake007v, если я открою доку то это на долго а потом будет все равно кривой код и непонятки. я не собираюсь становится разработчиком аддонов. это только для себя нужно.

Получилось спустя долгого мучения не подозревая почему возврат пустой :confused: у меня доп. поле было пустым а я думал что оно заполнено и не проверял. Вот решение
PHP:
$visitor = XenForo_Visitor::getInstance();
$value = $visitor['customFields']['field_id'];
return $value;
тему можно закрыть
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу