从 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 注销后,我注册的命名空间停止工作的主要内容,如果未能解决你的问题,请参考以下文章
teechart注册成功后,using steema.teechart 命名空间不存在是怎么回事