2016-09-23 8 views

ответ

3

Вот проблема и решение этой ошибки:

Когда мы вступаем в новый адрес электронной почты (тот, который не подключен к extisting абонента), абонентский объект ($ это) не имеет идентификатора ($ this-> getId(); // null) еще в Magento \ Newsletter \ Model \ Subscriber :: подписаться.

Письмо с подтверждением отправляется до того, как абонент будет сохранен, поэтому идентификатор абонента отсутствует на ссылке подтверждения. Ссылка не делает ничего, когда вы нажимаете на нее, потому что метод проверки в Magento \ Newsletter \ Controller \ Subscriber \ Confirm :: execute отклоняет ссылку из-за недостающего идентификатора.

Вы можете легко исправить эту проблему, вызвав $ this-> сохранить() перед вызовом $ this-> sendConfirmationRequestEmail();

try { 
      $this->save(); 
      if($isConfirmNeed === true && $isOwnSubscribes === false) 
      { 
       $this->sendConfirmationRequestEmail(); 
      } else { 
       $this->sendConfirmationSuccessEmail(); 
      } 
      return $this->getStatus(); 
     } catch (\Exception $e) { 
      throw new \Exception($e->getMessage()); 
     } 

я просто переместил «» сохранить «» '- позвоните несколько строк вверх. sendConfirmationRequestEmail и sendConfirmationSuccessEmail, похоже, не изменяет $ thisobject, так что это допустимое изменение, которое ничего не сломает.

 Смежные вопросы

  • Нет связанных вопросов^_^