TYPO3 v11:如何通过TypoScript将前端会话变量传入页面数据?
TYPO3 v11 前端会话变量传入页面数据解决方案
问题原因
你当前的TypoScript写法存在两处问题:
- 直接将
session:ses|typows_accessToken作为TEXT的值,TYPO3无法直接解析该格式的变量,需要通过stdWrap.data来读取会话数据; - 使用旧的
globalVar条件语法,且仅在变量存在时执行配置,若变量为空会导致配置不生效。
正确配置方案
方案1:直接读取会话变量(无需条件判断)
page.10.variables.tokensessione = TEXT page.10.variables.tokensessione.stdWrap.data = session:ses|typows_accessToken
该写法会直接读取会话中的typows_accessToken值,变量不存在时输出为空。
方案2:带条件判断的写法(仅变量存在时赋值)
TYPO3 v11推荐使用新的条件函数语法替代globalVar,兼容性更好:
[session("ses|typows_accessToken")] page.10.variables.tokensessione = TEXT page.10.variables.tokensessione.stdWrap.data = session:ses|typows_accessToken [global]
验证要点
- 确认模板中正确调用了
{tokensessione}变量(若使用Fluid模板); - 清除前端浏览器缓存和TYPO3后端缓存后测试;
- 可在控制器中添加调试代码确认会话变量已正确设置:
\TYPO3\CMS\Core\Utility\DebugUtility::debug($GLOBALS['TSFE']->fe_user->getKey('ses', 'typows_accessToken'));
内容的提问来源于stack exchange,提问作者MarioProject
相关产品推荐
相关产品推荐

