2017-08-29 94 views

回答

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发出拉取请求,以在成员上设置此配置选项,因为您可能不是第一个认为这是批量导入工具的奇怪行为的人。

希望这会有所帮助!

相关问题