Как мы используем более одного сообщения во FlashMessenger, используя Zend Framework

Я использую Zend. У меня есть следующий кусок кода,

....
$cust = 'test@test.com';
$list.='Also Sent Mail to following members';
                foreach($m_list as $value)
                {
                $mail_to_manu = new Zend_Mail('utf-8');                    
                $mail_to_manu->clearFrom();                    
                $mail_to_manu->setBodyHtml('Text')
                ->setFrom('noreply@test.com', 'test admin')
                ->addTo($value['email'])
                ->setSubject('Test');
                $mail_to_manu->send();       
                $list.=$value['manufacturers_email'].'<br/>';
                } 
                $this->_helper->flashMessenger->addMessage('Mail send to '. $cust. ' Successfully'.$list);
        $this->_redirector->gotoUrl('/index');    
.....

Я получил сообщение без каких-либо сообщений о перерыве.

Mail send to test@test.com Successfully Also Sent Mail to following members some1@example.com some2@example.com...

Мне нужно, чтобы мое сообщение было похоже,

 Mail send to test@test.com Successfully 
 Also Sent Mail to following members,
 some1@example.com
 some2@example.com
 ...

Поэтому мне нужно сделать перерыв один за другим. Это возможно сделать во Flash Messenger. Если да, пожалуйста, совет.

2 ответа

Ваш вопрос

Причина, по которой все это объединено, состоит в том, что вы echoвсе это в цикле без дополнительной разметки.

Как насчет чего-то вроде:

foreach ($this->messages as $message)
{
    echo '<p class="message">' . $this->escape($message) . '</p>';
}

Но, на самом деле, есть намного лучший способ обработки flashMessenger в представлениях. Как вы знаете, Zend FlashMessenger - это помощник в действии. Но есть также отличный помощник вида, который помогает вам красиво выводить ваши сообщения. Лучшее в этом то, что вы можете передать array('warning' => 'This is a warning') и ключ массива (предупреждение) будет использоваться в качестве класса для <p> тег. Вы можете найти информацию об этом помощнике в блоге Карлтона Гибсона и дополнительные объяснения в этом вопросе SO.

Ваше переменное именование нуждается в улучшении

  • Напишите читаемые имена переменных, такие как $customer вместо просто $cust, Никто никогда не говорил, что сокращение имен переменных - это средство написания скудного кода;). Сокращение имен переменных - это плохо (запах кода), потому что это делает код менее читаемым для других и для вас самих в будущем.
  • Используйте корпус, как это $mailToManufacturer вместо использования подчеркивания. Это общее соглашение (стандарт) и, следовательно, хорошо для удобочитаемости и понимания кода.

Ты используешь strip_tags или что-то похожее в скрипте вида? Это может привести к <br /> теги, чтобы быть раздетым.

Также возможно добавить несколько сообщений, позвонив flashMessenger->addMessage() один раз для каждого адреса:

$cust = 'test@test.com';
$this->_helper->flashMessenger->addMessage('Mail send to '. $cust. ' Successfully');
if(count($m_list)>0 )
    $this->_helper->flashMessenger->addMessage('Also Sent Mail to following members');
foreach($m_list as $value)
{
    $mail_to_manu = new Zend_Mail('utf-8');                    
    $mail_to_manu->clearFrom();                    
    $mail_to_manu->setBodyHtml('Text')
    ->setFrom('noreply@test.com', 'test admin')
    ->addTo($value['email'])
    ->setSubject('Test');
    $mail_to_manu->send();       
    $this->_helper->flashMessenger->addMessage($value['manufacturers_email']);
} 
$this->_redirector->gotoUrl('/index');    
Другие вопросы по тегам