TYPO3 9.5+ Symfony条件语法实现前端复选框控制发件人邮件开关
TYPO3 9.5+ Symfony条件实现PowerMail复选框控制发件人邮件
你的旧条件是通过判断前端复选框的请求参数是否为空,来控制PowerMail是否向发件人发送邮件。在TYPO3 9.5+的Symfony条件语法中,需要注意traverse函数的路径分隔符和参数判断逻辑,以下是正确的实现方式:
正确的TypoScript代码
[traverse(request.getParsedBody(), 'tx_powermail_pi1.field.emailanabsender.0', '') !== ''] plugin.tx_powermail.settings.setup.sender.enable = 1 [else] plugin.tx_powermail.settings.setup.sender.enable = 0 [global]
关键修正点
- 路径分隔符:
traverse函数使用点.作为嵌套数组的分隔符,而非你之前使用的斜杠/,这是原写法失效的核心原因。 - 默认值与空值判断:给
traverse添加第三个参数''(空字符串),当请求中不存在该参数时会返回默认值,确保判断逻辑和旧条件globalString = GP:... =完全一致——只有当参数值不为空时,才启用发件人邮件。 - 兼容复选框特性:前端复选框未勾选时,该参数不会出现在请求体中,通过默认值可以避免遍历不存在的路径引发的问题。
如果需要更严谨的判断(先确认参数结构存在),也可以使用以下写法:
[traverse(request.getParsedBody(), 'tx_powermail_pi1.field.emailanabsender', []) !== [] && traverse(request.getParsedBody(), 'tx_powermail_pi1.field.emailanabsender.0', '') !== ''] plugin.tx_powermail.settings.setup.sender.enable = 1 [else] plugin.tx_powermail.settings.setup.sender.enable = 0 [global]
内容的提问来源于stack exchange,提问作者boogie76
相关产品推荐
相关产品推荐

