我使用login_link (docs)对忘记密码的用户进行身份验证。
按照文档,我定制了电子邮件,我覆盖了htmlTemplate,但在现实生活中phpStan阻止我说:Call to an undefined method SymfonyComponentMimeRawMessage::htmlTemplate().
我试图修复它,但我卡住了:(
有什么主意吗?
对于EmailMessage::getMessage()
的返回类型提示是RawMessage
,实际上没有htmlTemplate()
方法。
然而,在这个特殊的情况下,你实际上得到了一个NotificationMail
(见这里的相关代码),它最终继承自RawMessage
,但实现了htmlTemplate()
方法(或者,更准确地说,它继承自TemplatedEmail
,实现了上述方法)。
检查
$email
是否为NotificationMail
的实例$email = $emailMessage->getMessage(); if ($email instanceof NotificationMail) { $email->htmlTemplate(...); }
添加一个断言,如果
$email
不是NotificationMail
,将在运行时抛出异常$email = $emailMessage->getMessage(); assert($email instanceof NotificationMail); $email->htmlTemplate(...);
添加内联
@var
。请注意,根据php文档,不建议使用这种方法。(感谢@Ondřej Mirtes指出这一点)/** @var NotificationMail $email */ $email = $emailMessage->getMessage();