0

我正在使用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 中做到这一点。如果是,请提供建议。

4

2 回答 2

0

你的问题

将所有内容组合在一起的原因是您在echo没有额外标记的情况下将其全部循环播放。

怎么样的东西:

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

但是,事实上,有一种更好的方法来处理视图中的 flashMessenger。如您所知,Zend FlashMessenger 是一个动作助手。但是还有一个很棒的视图助手可以帮助你很好地输出你的消息。最好的一点是,您可以传递一个array('warning' => 'This is a warning')数组键(警告)将用作<p>标签的类。您可以在 Carlton Gibson 的博客上找到有关此助手的信息,在此 SO question 中找到其他解释

您的变量命名需要改进

  • 写出可读的变量名,$customer而不是仅仅$cust. 没有人说过缩短变量名是编写精简代码的一种方法;)。缩短变量名是不好的(代码异味),因为它会降低代码对其他人和您自己未来的可读性。
  • 像这样使用大小写$mailToManufacturer而不是使用下划线。这是一个普遍的协议(标准),因此也有利于代码的可读性和理解。
于 2011-10-05T10:16:09.280 回答
0

您是否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');    
于 2011-10-05T07:20:33.783 回答