从FE用户获取数据到TYPO3 8.7.x中自己的EXT

时间:2019-04-15 11:51:40

标签: typo3 typo3-8.x typo3-extensions

嘿,我正在尝试从当前使用该网站的登录用户那里获取数据(即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;,它将在我的命名空间文件夹中寻找相同的文件。有谁知道如何使它工作?

2 个答案:

答案 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')