【发布时间】:2017-08-29 01:44:56
【问题描述】:
当 CSV 将用户导入 Silverstripe 3.6 时,会发送更改密码的电子邮件。 有没有办法阻止这封电子邮件被发送?
【问题讨论】:
标签: php silverstripe
当 CSV 将用户导入 Silverstripe 3.6 时,会发送更改密码的电子邮件。 有没有办法阻止这封电子邮件被发送?
【问题讨论】:
标签: php silverstripe
看起来这种行为是由于在导入过程中“成员”上的“密码”字段被“更改”(从无到有)。如果您查看Member::onBeforeWrite,它会检查配置属性“notify_password_change”,您可以使用自定义加载程序临时覆盖它:
class NoEmailMemberCsvBulkLoader extends MemberCsvBulkLoader
{
public function load($filepath)
{
try {
Config::nest()
Config::inst()->update('Member', 'notify_password_change', false);
return parent::load($filepath);
} finally {
Config::unnest();
}
}
}
然后您可以告诉 SilverStripe 使用您的导入器。这里的问题是MemberImportForm::doImport直接实例化MemberCsvBulkLoader,所以你不能用注入器重载它,或者以任何其他方式设置它。这是一种耻辱。
一个短期选项,因为为 您(注意:不是您可能拥有的客户端)导入 CSV 将是在您执行此操作时在您的 _config.php 文件之一中禁用此配置设置进口。
您可以考虑向框架提出拉取请求,以使使用new MemberCsvBulkLoader 的区域可注入。另一种选择是直接向MemberCsvBulkLoader 发出拉取请求以在成员上设置此配置选项,因为您可能不是第一个认为这是批量导入工具的奇怪行为的人。
希望这会有所帮助!
【讨论】: