嘿,我正在尝试从当前使用该网站的登录用户那里获取数据(即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 Reevo\ReevoElearning\Output;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper;
use \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Context\UserAspect;
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 TYPO3\CMS\Core\Context\Context;
,它将在我的命名空间文件夹中寻找相同的文件。有谁知道如何使它工作?
答案 0 :(得分:1)
$GLOBALS['TSFE']->fe_user->user
在TYPO3 8.7中仍然可用。我认为它在9中已被弃用,但直到10年才被删除。我认为9.4中引入了FrontendUserAspect,并且很可能TYPO3\CMS\Core\Context\Context
也是如此,因此错误是正确的。您仍应在TYPO3 8.7中使用$GLOBALS['TSFE']->fe_user->user
答案 1 :(得分:0)
上下文 API 是在 TYPO3 9 中引入的。如果文档是正确的,上下文 API 不是 TYPO3 8.7 的一部分。
// will work in TYPO3 9.5
$frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
$frontendUserAspect->get('id')