2017-08-29 75 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發出拉取請求,以在成員上設置此配置選項,因爲您可能不是第一個認爲這是批量導入工具的奇怪行爲的人。

希望這會有所幫助!

相關問題