![](/img/trans.png)
[英]How Can I Get the Current Logged-In User with WordPress SHORTINIT
[英]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.