2016-01-28 1 views
0

мы предполагаем, что вся переменная не пуста, и она отлично работает. и он поместился в мою электронную почту. и все отлично работает.быстрая почта: как получить последнее сообщение (после замены)

и вопрос, как я могу получить тело, которое уже заменяет?

до $ mailer-> отправить ($ message) я уже дамп $ message-> getBody(); но тело еще не заменило: «test [имя пользователя]»

после $ mailer-> send ($ message), я получаю тот же результат.

мое ожидание: «test myname»;

Как я могу получить тело, которое уже заменяет плагин-декоратор? Нужна помощь .. спасибо

$data = array('[username]'=>$content['username']); 
$plugin = new Swift_Plugins_DecoratorPlugin($data); 
$message = \Swift_Message::newInstance() 
      ->setSubject($subject) 
      ->setFrom($this->FROM_ADDRESS, $this->FROM_NAME) 
      ->setTo($to) 
      ->setBody("test [username]"); 

$mailer = \Swift_Mailer::newInstance($transport); 
     if (!is_null($plugin)) { 
      $mailer->registerPlugin($plugin); 
     } 



$mailer->send($message) 

Примечание: В моем письме его уже заменить, и ничего плохого. Мне нужно последнее тело для моего журнала. поэтому, после того, как сообщение отослано, он хранить в MyLog

ответ

0

я решить мою собственную проблему,

в Swift_Plugins_DecoratorPlugin есть 3 метода, что я считаю его важным для этого случая,

  1. beforeSendPerformed -> заменить все маркер.
  2. sendPerformed -> вызов другого метода _restoreMessage.
  3. _restoreMessage -> восстановить назад тело.

как решить: в новом классе, просто получить значение в sendperfomed, прежде, чем его называют _restoremessage, чем бросить значение для вашего нового метода.

в новом классе, который наследует Swift_Plugins_DecoratorPlugin

public function sendPerformed(\Swift_Events_SendEvent $evt){ 
    $this->getValue = $evt->getMessage()->getBody(); 
    parent::sendPerformed($evt); 
} 

public function getFinalBody(){ 
    return $this->getValue; 
} 

благодаря

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

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