【发布时间】:2016-12-05 10:08:56
【问题描述】:
我使用 Yii2 框架和 Swiftmailer 使用 PHP 进行编程。
我正在尝试找到一种方法来使用错误消息更新数据库字段。当用户尝试创建帐户时,他声明的电子邮件无效,应使用错误消息更新字段 FailMesg。 我尝试了两种不同的方法,但似乎都不起作用(数据库字段仍然为 NULL):
第一个(在 send() 方法中包含变量)
$message = Swift_Message::newInstance()
->………..
$transport = ………………
$mailer = Swift_Mailer::newInstance($transport);
if($mailer->send($message, $failures)){
……..
else
……..
$user->FailMesg = $failures;
........
$user->save();
第二个(使用 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();
我在这里遗漏了什么吗?任何建议都将受到高度赞赏。
【问题讨论】:
-
从您提供的代码示例中,我看不到您调用
user->save()来实际将$user->FailMesg的值保存到数据库中。我假设$user是User模型的对象,并且FailMesg` 字段存在于对应的user表中。 -
您的假设是正确的。当然我包含了一个
$user->save()命令,只是忘记包含了,对不起,我将编辑最初的问题。 - @sm1979 -
你能附上你的
rules吗?验证可能会妨碍您的保存。 -
@topher 我假设您询问的是 FailMesg 字段:在数据库(SQL Server)中,它被定义为数据类型 nvarchar(MAX)。在 Yii2 模型中,它应用的唯一规则是:string.
-
@topher 由于您的评论,我还将 FailMesg 字段定义为 'safe' 但没有任何改变
标签: php yii2 swiftmailer