Как мы используем более одного сообщения во 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');