Typo3 从BackendUserAuthentication检索BackendUser

Typo3 从BackendUserAuthentication检索BackendUser,typo3,Typo3,我正在尝试开发一个扩展,在TYPO3后端的ClearCache菜单中添加一个按钮。在具有多个域的大型安装中,非管理员用户需要一个按钮来清除其域的页面缓存,但只清除他们有权访问的那些页面。默认的options.clearCache.pages=1会刷新安装的整个前端缓存 我已经在自定义类ClearCacheHook中调用了一个方法,该类实现了\TYPO3\CMS\Backend\Toolbar\ClearCacheActionsHookInterface 接下来,我需要获取后端用户可以访问的所有页

我正在尝试开发一个扩展,在TYPO3后端的ClearCache菜单中添加一个按钮。在具有多个域的大型安装中,非管理员用户需要一个按钮来清除其域的页面缓存,但只清除他们有权访问的那些页面。默认的
options.clearCache.pages=1
会刷新安装的整个前端缓存

我已经在自定义类
ClearCacheHook
中调用了一个方法,该类实现了
\TYPO3\CMS\Backend\Toolbar\ClearCacheActionsHookInterface

接下来,我需要获取后端用户可以访问的所有页面UID的列表,这是通过
$BackendUser->getDbMountPoints()
完成的。所有文档都提到一个全局变量$BE_USER,但这不是为我设置的。我有一个
$GLOBALS['BE_USER']
,但它属于
BackendUserAuthentication


我不知道如何从
BackendUserAuthentication
解析
BackendUser
。对象中有后端用户uid,因此我尝试通过ObjectManager初始化
TYPO3\\CMS\\Beuser\\Domain\\Repository\\BackendUserRepository
,但失败了。

我将关注更具体的任务:创建后端用户存储库的实例,并从uid创建后端用户的实例

您可以看看TYPO3核心中的be_log类

具体而言:

使用TYPO3\CMS\Core\Utility\general功能;
使用TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository;
使用TYPO3\CMS\Extbase\Object\ObjectManager;
...
$objectManager=GeneralUtility::makeInstance(objectManager::class);
$backendUserRepository=$objectManager->get(backendUserRepository::class);
/**@var\TYPO3\CMS\Extbase\Domain\Model\BackendUser$user*/
$user=$backendUserRepository->findByUid($uid);

如果有文档中没有的东西,我有时会查看现有的扩展。一个好的候选者是扩展。当然,其他优秀的候选者是TYPO3源代码

你能为你的设置提供更多的背景资料吗?也许可以用缓存标签来解决这个问题。这是一个大约有120个子站点的安装。其中的每一个都至少有一个不同的用户。几乎所有页面都是可缓存的,我使用nc_staticfilecache。标准的页面缓存刷新按钮会导致整个站点的速度急剧下降,不过,作为编写自己的扩展的替代方法,您可以查看EXT:sm\u clearcachecm。此扩展允许您的后端用户删除他们在后端有权访问的页面上的缓存。@cephei_vv这就是我的想法来源,但不幸的是,我正在处理需要更方便的用户。