【问题标题】:TYPO3 extension - f:uri.resource returns wrong pathTYPO3 扩展 - f:uri.resource 返回错误的路径
【发布时间】:2020-02-12 16:56:39
【问题描述】:

我正在为我自己的 TYPO3 扩展程序编写一个后端模块,其中我将内容包装到一个 be.container 中,包括一个 CSS 和一个 JS 文件:

<f:be.container 
    includeCssFiles="{0: '{f:uri.resource(path:\'CSS/backend.css\')}'}" 
    includeJsFiles="{0: '{f:uri.resource(path:\'JS/backend.js\')}'}"
>
    <!-- module content -->
</f:be.container>

但这些资源都没有包含在内。当我将f:uri.resource 直接渲染到 HTML 中时,它 - 无论是哪条路径 - 都会解析为

/typo3/

这对我来说毫无意义。在我的项目中,/typo3/ 是 TYPO3 核心符号链接到的路径,相对于我的 Web 路径。

我确定我的资源文件分别放在EXT:my_extension/Resources/Public/CSS/backend.cssEXT:my_extension/Resources/Public/JS/backend.js 中。我有一个类似的问题,包括前端的资源,它可以解决为 / - 最后我决定通过 Typoscript 进行包含。我不确定我是否也可以为后端模块执行此操作。知道如何解决这个问题吗?也许我在配置中遗漏了一些东西,它弄乱了f:uri.resource 的路径分辨率。任何帮助将不胜感激。

【问题讨论】:

    标签: typo3 fluid typo3-9.x typo3-extensions


    【解决方案1】:

    对于最小的测试用例,尝试将纯输出放入您的流体模板:

    {f:uri.resource(path:'CSS/backend.css')}
    

    如果产生相同的结果,则 ViewHelper 似乎不知道当前的扩展。您可以将扩展键作为参数传递给它,请参阅https://docs.typo3.org/other/typo3/view-helper-reference/9.5/en-us/typo3/fluid/latest/Uri/Resource.html

    【讨论】:

    • 就像我说的,将路径直接放入 Fluid 模板只会为我呈现 /typo3/。但是现在添加扩展键实际上呈现了正确的路径!我不使用任何自定义 ViewHelper,所以我猜这里使用的是默认的。为什么它无法识别扩展程序?
    • 这可能是后端上下文中的疏忽。那里的流体有时仍然有点“粗糙”。前端的extensionKey在Controller->request的所谓controllerContext中。也许该对象没有完全填充到后端。
    • 我已经从返回requestrequest 对象中打印出getControllerExtensionKey,尽管扩展键实际上是qa。这可能是问题吗?不确定下划线来自哪里,我假设密钥来自$EM_CONF,我将标题设置为Q&amp;A。我把它改成QA并重新安装了扩展,它打印出来的密钥还是一样的。
    • 好吧,我刚刚检查了命名约定,并认为 QA 被解释为驼峰式大小写可能是我的扩展程序中的一个问题......我将重新命名并检查是否这解决了问题。
    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多