Как мы используем более одного сообщения во FlashMessenger, используя Zend Framework - PullRequest
0 голосов
/ 05 октября 2011

Я использую 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');    
.....

Я получил сообщение без любого сообщения break.my, похожего на

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 ]

0 голосов
/ 05 октября 2011

Ваш вопрос

Причина, по которой все это объединено в кучу, заключается в том, что вы 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 вместо подчеркивания. Это общее соглашение (стандартное), и поэтому хорошо для удобочитаемости и понимания кода.
0 голосов
/ 05 октября 2011

Используете ли вы 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');    
...