TYPO3 10.4.20自定义扩展多模板发邮件失败报500错误求助
代码存在的问题及修复方案
- 变量作用域错误(核心500报错原因)
你在setTemplateAdmin、setTemplateUser、setTemplateFreeTrialAdmin三个方法中直接使用了$userData变量,但该变量既没有作为参数传入方法,也没有声明为类的属性,方法内部无法访问到外部的$userData,会直接抛出「Undefined variable $userData」错误,这也是你拿不到$userData['email']的根本原因。
修复方式:给三个方法增加$userData传参,调用时传入对应值:
// 定义方法时加参数 public function setTemplateAdmin(array $userData){ // 方法内部原有逻辑不变 } // 调用时传参 $this->setTemplateAdmin($userData);
- 扩展名拼写错误
setTemplateUser方法中调用ExtensionManagementUtility::extPath时,扩展名写成了my_extensionn(末尾多了一个n),会导致无法找到对应模板文件抛出路径错误,直接触发500。
修复方式:修正为正确的扩展名my_extension。 - 多余的exit中断
模板逻辑执行完后你加了exit;代码,会直接中断TYPO3的正常请求流程,就算邮件发送成功也无法正常返回表单提交后的响应,大概率会返回空白页或者异常。
修复方式:删除不必要的exit;代码,按控制器正常逻辑返回响应。 - 无意义的变量赋值
三个setTemplate*方法都没有定义返回值,你调用时赋值给$setTemplateAdmin等变量的操作完全冗余,不会拿到任何有效返回值,可以直接调用方法不需要赋值。 - 参数来源问题(可选排查)
你最外层判断用的$arguments['requestform']如果是前端提交的表单参数,需要确认你是否已经从请求中正确获取到了$arguments变量,避免该变量未定义导致的判断逻辑错误。
内容的提问来源于stack exchange,提问作者user12414491
相关产品推荐
相关产品推荐

