将错误消息返回到数据库字段:Yii2和Swiftmailer

时间:2016-12-05 10:08:56

标签: php yii2 swiftmailer

我使用 Yii2 框架和 Swiftmailer 在PHP中编程。

我正在尝试使用错误消息更新数据库字段。当用户尝试创建帐户,并且他声明的电子邮件不是有效帐户时,应使用错误消息更新字段 FailMesg 。 我尝试了两种不同的方法,但似乎都没有(数据库字段保持为NULL):

1st(在send()方法中包含变量)

$message = Swift_Message::newInstance()
    ->………..
$transport = ………………
$mailer = Swift_Mailer::newInstance($transport);
if($mailer->send($message, $failures)){
    ……..
else
    ……..
    $user->FailMesg = $failures;
........
$user->save();

2nd(使用Logger插件)

$message = Swift_Message::newInstance()
    ->………..
$transport = ………………
$mailer = Swift_Mailer::newInstance($transport);
$logger = new \Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));
if($mailer->send($message)){
    ……..
else
    ……..
    $user->FailMesg = $logger->dump();
........
$user->save();

我在这里遗漏了什么吗?任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

$failures是一个数组,而不是一个字符串。来自swiftmailer docs

  

如果变量名称尚不存在,它将被初始化为空数组,然后将失败添加到该数组中。如果变量已经存在,它将被类型转换为数组,并且将向其添加失败。

在保存之前,您必须将其更改为字符串:

$user->FailMesg = implode("|", $failures);