从 BE 注销后,我注册的命名空间停止工作

Posted

技术标签:

【中文标题】从 BE 注销后,我注册的命名空间停止工作【英文标题】:My registered namespace stops to work after logout from BE 【发布时间】:2020-11-19 12:38:06 【问题描述】:

我有我的站点包扩展 toolbox 和许多自定义 ViewHelpers。为了不违反 DRY 规则,我注册了自己的命名空间(使用 global namespace import tip),以便在 Fluid 中识别它,而不是像通常在 typo3conf/ext/toolbox/ext_tables.php 中一样放置在每个模板的开头,并且通常有效:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']['toolbox'] = ['BIESIOR\Toolbox\ViewHelpers'];

我可以(或者更确切地说可以)使用我的 VH,例如 <toolbox:someViewHelper />,但是在将页面从开发移动到生产(同一台机器,只是切换域)之后,我突然得到一个异常,例如:

TYPO3Fluid\Fluid\Core\Parser\UnknownNamespaceException

Fluid parse error in template Standard_action_Orangeheader_2c41396366318874342b894b22eff7acb311cc0c, line 2 at character 1. Error: Unknown Namespace: toolbox (error code 0). Template source chunk: toolbox:containerEscape(condition: data.tx_mask_escape, start: 'true')

当我以管理员身份登录 BE 并在同一个浏览器中预览 FE 时,令人沮丧的问题消失了,我将尽快从 BE 注销和/或访问所需的 FE 页面换个浏览器,异常又回来了。

正如在开发过程中提到的,这个问题在注销后没有发生。

ViewHelper 用于包含在主 TypoScript 中的页面模板中,带有FLUIDTEMPLATE cObject。

有人有这种奇怪的行为吗?

【问题讨论】:

【参考方案1】:

使用ext_localconf.php 而不是ext_tables.php

不确定,但我认为ext_table.php 只是后端 (BE) 上下文,但您需要 FE 上下文中的 ViewHelper。

【讨论】:

来自documentation:ext_tables.php 并不总是包含在前端上下文的全局范围内。仅当 TYPO3 后端或 CLI 请求发生或调用 TYPO3 前端并且验证了有效的后端用户时,才会包含此文件。

以上是关于从 BE 注销后,我注册的命名空间停止工作的主要内容,如果未能解决你的问题,请参考以下文章

u'https' 不是注册的命名空间

teechart注册成功后,using steema.teechart 命名空间不存在是怎么回事

如何让TYJ3 BE正确解析NameJS命名空间?

让 VS 2008 停止强制缩进命名空间的方法?

有没有办法让 Visual Studio 停止缩进命名空间?

项目命名空间中的rancher 2.0网络