TYPO3 9/10下如何编写TypoScript条件判断POST参数非空
TypoScript判断POST参数非空的正确写法(TYPO3 9/10+适用)
原写法失效原因
你使用的traverse函数调用方式不符合语法要求,traverse用于安全遍历嵌套结构避免键不存在报错,需要将待遍历对象作为第一个参数,键路径作为第二个参数传入。
不同场景的正确实现
1. 严格判断仅POST参数存在且非空
优先判断请求为POST类型,再校验参数,避免非POST请求下getParsedBody()返回null引发异常:
[request.getMethod() === 'POST' && traverse(request.getParsedBody(), 'ttp_basket') && trim(traverse(request.getParsedBody(), 'ttp_basket')) !== ''] plugin.tt_products = USER_INT [global]
2. 兼容GET+POST参数(和旧版本GP:ttp_basket逻辑完全一致)
如果不需要严格限制参数来源,推荐用TYPO3封装的gp()快捷方法,写法更简洁:
[gp('ttp_basket') !== null && trim(gp('ttp_basket')) !== ''] plugin.tt_products = USER_INT [global]
该写法和TYPO3 8.7及更早版本的[globalVar = GP:ttp_basket != '']功能完全等价,适配性更好。
内容的提问来源于stack exchange,提问作者Franz Holzinger
相关产品推荐
相关产品推荐

