我有我的网站包扩展 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。
有人有如此奇怪的行为吗?
最佳答案
使用 ext_localconf.php
而不是 ext_tables.php
。
不确定,但我认为 ext_table.php
仅是后端 (BE) 上下文,但您需要 FE 上下文中的 ViewHelper。
关于typo3 - 从 BE 注销后,我注册的命名空间停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63161780/