You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 12 LTS:f:uri.page ViewHelper渲染上下文缺失有效请求对象

解决StandAloneView中<f:uri.page>标签未解析的问题

核心原因

StandAloneView作为独立视图渲染器,默认未关联TYPO3的页面上下文与UriBuilder服务,导致Fluid页面URI标签无法被解析,直接输出原始代码。

修复步骤

  • 初始化视图时注入必要服务
    在控制器创建StandAloneView实例后,手动注入UriBuilder并关联请求上下文:

    use TYPO3\CMS\Core\Utility\GeneralUtility;
    use TYPO3\CMS\Fluid\View\StandaloneView;
    use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
    
    // 创建视图实例并指定模板
    $view = GeneralUtility::makeInstance(StandaloneView::class);
    $view->setTemplatePathAndFilename('你的模板文件路径');
    
    // 初始化并注入UriBuilder
    $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
    $uriBuilder->setRequest($this->request);
    $view->assign('uriBuilder', $uriBuilder);
    
  • 检查模板命名空间
    确保模板开头已正确声明Fluid命名空间:

    <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
    
  • 应急替代方案
    若上述配置无法快速生效,可直接在模板中用PHP生成页面URL:

    <?php
    $pageUid = 1;
    echo GeneralUtility::makeInstance(\TYPO3\CMS\Core\Routing\PageRouter::class)->generateUri($pageUid);
    ?>
    

额外注意事项

  • 确认StandAloneView的模板路径配置正确,避免加载错误文件
  • TYPO3 11+版本需额外关联Site对象:
    $site = $this->request->getAttribute('site');
    $uriBuilder->setSite($site);
    

内容的提问来源于stack exchange,提问作者Hoja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:32:03