簡體   English   中英

如何從 Fluid 獲取當前登錄的用戶?

[英]How to get the current logged-in user from Fluid?

我需要一種方法來從 Fluid 獲取當前登錄的用戶對象。 我在 Partials 和 Layouts 中需要它,而不僅僅是在 Templates 中,所以我不能通過從 Controller 類中獲取它作為參數來做到這一點。

我已經知道如何從 Typoscript 中做到這一點,例如獲取他/她的名字:

TSFE:fe_user|user|name

為了從 Php 獲取它,我使用我自己的擴展 FrontendUser 類中的靜態函數:User,稱為User::getLogged() 我可以從 Partial 調用這個函數嗎? 或者還有其他方法嗎?

提前致謝!

TYPO3 10 教程

首先,如果你想使用你的部分,那么你可以通過模板布局等調用它們。你也可以給它們一些參數。 因此,如果您想調用例如菜單部分,如果您想傳遞一些參數,您可以執行類似的操作:

<f:render partial="Menus/Menu" arguments="{user: user}"/>

或者如果你想傳遞所有參數

<f:render partial="Menus/Menu" arguments="{_all}"/>

現在,如果您使用控制器獲取用戶對象,則有更好的方法可以讓您的用戶進入 FrontEnd。 您可以為此使用TYPO3 Context API 您可以為它構建一個 ViewHelper,您可以在任何地方調用它。

首先,您需要注冊您的 ViewHelper。 your_extension/ext_localconf.php 下

$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']['yourNamespace'] = ['YourVendor\\YourExtension\\ViewHelpers'];

然后在your_extension/Classes/ViewHelpers/Data/UserViewHelper.php 下

use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;


class UserViewHelper extends AbstractViewHelper
{
    use CompileWithRenderStatic;

    public static function renderStatic(array $arguments,\Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)  
    {
       $output = $renderChildrenClosure();
       $userRepository = GeneralUtility::makeInstance(FrontendUserRepository::class);
       $context = GeneralUtility::makeInstance(Context::class);
       $userId = $context->getPropertyFromAspect('frontend.user', 'id');
       $user = $userRepository->findByUid($userId);
       $renderingContext->getVariableProvider()->add('loggedInUser',$user);
       
       return $output;
}

然后在您的模板/部分/布局上,您可以執行以下操作:

<yourNamespace:data.user/>

如果您調試變量<f:debug>{_all}</f:debug>那么您將擁有一個名為loggedInUser的新變量,其中包含您的用戶對象。 您可以在任何地方使用它並獲得所需的所有信息。

此致

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM