TYPO3中从FE用户获取数据到自己的EXT 8.7.x
Get data from FE user into own EXT in TYPO3 8.7.x
嗨,我正在尝试从使用该站点的当前登录用户获取数据(即 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;
它正在我的命名空间文件夹中寻找相同的文件。有谁知道如何让它工作?
$GLOBALS['TSFE']->fe_user->user
在 TYPO3 8.7 中仍然可用。我认为它在 9 中已被弃用,但在 10 之前不会被删除。FrontendUserAspect 是在 9.4 中引入的,我认为可能 TYPO3\CMS\Core\Context\Context
也是如此,所以错误是正确的。你仍然应该在 TYPO3 8.7 中使用 $GLOBALS['TSFE']->fe_user->user
。
官方文档:
- 变更日志:在 9.4 中引入上下文 API:Feature: #85389 - Context API for consistent data handling
- Context API and Aspects
的官方文档
As for TYPO3 v9, the old properties can be used the same way as before, but will trigger a PHP E_USER_DEPRECATED error.
上下文-API 是在 TYPO3 9 中引入的。如果文档正确,则上下文-API 不是 TYPO3 8.7 的一部分。
// will work in TYPO3 9.5
$frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
$frontendUserAspect->get('id')
嗨,我正在尝试从使用该站点的当前登录用户获取数据(即 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;
它正在我的命名空间文件夹中寻找相同的文件。有谁知道如何让它工作?
$GLOBALS['TSFE']->fe_user->user
在 TYPO3 8.7 中仍然可用。我认为它在 9 中已被弃用,但在 10 之前不会被删除。FrontendUserAspect 是在 9.4 中引入的,我认为可能 TYPO3\CMS\Core\Context\Context
也是如此,所以错误是正确的。你仍然应该在 TYPO3 8.7 中使用 $GLOBALS['TSFE']->fe_user->user
。
官方文档:
- 变更日志:在 9.4 中引入上下文 API:Feature: #85389 - Context API for consistent data handling
- Context API and Aspects 的官方文档
As for TYPO3 v9, the old properties can be used the same way as before, but will trigger a PHP E_USER_DEPRECATED error.
上下文-API 是在 TYPO3 9 中引入的。如果文档正确,则上下文-API 不是 TYPO3 8.7 的一部分。
// will work in TYPO3 9.5
$frontendUserAspect = GeneralUtility::makeInstance(Context::class)->getAspect('frontend.user');
$frontendUserAspect->get('id')