当CSV将用户导入Silverstripe 3.6时,密码已更改,电子邮件将被发送出去。 有没有办法阻止发送此电子邮件?
答案 0 :(得分:2)
看起来这种行为来自于成员的密码字段在导入过程中被“更改”的事实(从无到有)。如果查看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
发出拉取请求,以便在成员上设置此配置选项,因为您可能不是第一个认为这是批量导入工具的奇怪行为的人。
希望这有帮助!