【发布时间】:2016-09-16 16:49:14
【问题描述】:
如何通过 Viewhelper 获取和呈现 FE 用户的 uid?下面是通过控制器工作......但不是在 Viewhelper 中。区别在哪里?我正在使用 7.6.11,最后我想拥有 FE 用户的 uid 和他的用户组 uid,并在扩展的 html 和一般部分中进一步使用它......
/typo3conf/ext/extension/Classes/ViewHelpers/UserViewHelper.php
<?php
namespace Vendor\Extension\ViewHelpers;
class UserViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
/**
* User Repository
*
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
* @inject
*/
protected $userRepository;
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
* @inject
*/
protected $frontendUserGroupRepository;
public function render() {
$userIDTest = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);
$this->view->assign('userIDTest', $userIDTest);
}
}
列表.html
<f:layout name="Default" />
<f:section name="main">
{userIDTest.uid}
</f:section>
按照 Dimitry 的建议,我替换了
$this->view->assign('userIDTest', $userIDTest);
与
return $userIDTest;
在 List.html 我有这个:
{namespace custom=Vendor\Extension\ViewHelpers}
<f:layout name="Default" />
<f:section name="main">
<f:alias map="{user: '{custom:user()}'}">
{user.uid} {user.username}
</f:alias>
</f:section>
...在清除所有缓存(FE/BE/Install)并删除typo3temp之后...现在可以正常工作了!
【问题讨论】:
-
哪个 TYPO3 版本?在 7.x 及更高版本中,ViewHelpers 被编译,导致“render”方法仅被调用一次(用于编译)。之后,只调用“renderStatic”(一种静态方法)。您可以覆盖每次都会调用的“renderStatic”。当然,那时存储库不会那么容易获得。
-
嗨 Jost ...我在上面更新了。我正在使用 7.6.11。你能展示一个样本吗?有太多?在我这边……
-
您只想要用户 ID 还是完整的用户对象? ID 更容易,因为不需要存储库。
-
@Jost 请添加您的评论作为答案
-
@pgampe:太懒了......所有这些命名空间和东西让手头没有 IDE 真的很难。
标签: php typo3 typo3-7.6.x