#typo3 #typo3-8.x #typo3-extensions
#typo3 #typo3-8.x #typo3-расширения
Вопрос:
Привет, я пытаюсь получить данные (т. Е. uid) от текущего зарегистрированного пользователя, который использует сайт.
В TYPO3 7.6.X это было очень просто. Вам просто нужно было использовать $GLOBALS['TSFE']->fe_user->user
для получения данных. В TYPO3 8.7.x это немного сложнее. Он должен работать с. $frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
Но в моем случае это не так.
$frontendUserAspect->get('id')
Мой код выглядит так:
<?php
namespace ReevoReevoElearningOutput;
use TYPO3CMSCoreDatabaseConnectionPool;
use TYPO3CMSCoreDatabaseQueryQueryBuilder;
use TYPO3CMSCoreUtilityGeneralUtility;
use TYPO3CMSExtbasePersistenceGenericMapperDataMapper;
use TYPO3CMSFrontendContentObjectContentObjectRenderer;
use TYPO3CMSExtbaseObjectObjectManager;
use TYPO3CMSFrontendControllerTypoScriptFrontendController;
use TYPO3CMSCoreContextContext;
use TYPO3CMSCoreContextUserAspect;
class FlexformValue {
function field($content, $conf) {
// TSFE USER ID
$frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
$frontendUserAspect->get('id');
$test = $frontendUserAspect;
echo $test;
return "$test";
}
}
Я получаю следующую ошибку: ‘TYPO3 CMS Core Context Context’ не найден или что-то в этом роде.
Но если я удаляю эту строку use TYPO3CMSCoreContextContext;
, она ищет тот же файл в моей папке пространства имен. Кто-нибудь знает, как заставить это работать?
Ответ №1:
$GLOBALS['TSFE']->fe_user->user
по-прежнему доступен в TYPO3 8.7. Я думаю, что он устарел в 9, но не будет удален до 10. Я думаю, что аспект интерфейса пользователя был введен в 9.4 и, вероятно TYPO3CMSCoreContextContext
, был таким же, поэтому ошибка верна. Вы все равно должны использовать $GLOBALS['TSFE']->fe_user->user
в TYPO3 8.7.
Официальная документация:
- Список изменений: введение контекстного API в 9.4: Особенность: # 85389 — Контекстный API для согласованной обработки данных
- Официальная документация для контекстного API и аспектов
Что касается TYPO3 v9, старые свойства можно использовать так же, как и раньше, но вызовет ошибку PHP E_USER_DEPRECATED.
Ответ №2:
Контекстный API был введен в TYPO3 9. Если documentatin верен, контекстный API не был частью TYPO3 8.7.
// will work in TYPO3 9.5
$frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
$frontendUserAspect->get('id')