我们如何使用zend框架在flashMessenger中使用多个消息

时间:2011-10-05 06:56:22

标签: php zend-framework zend-mail

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

2 个答案:

答案 0 :(得分: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');    

答案 1 :(得分: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>标记的类。您可以找到information about this helper on Carlton Gibson's blogadditional explanations in this SO question

您的变量命名需要改进

  • 编写可读变量名称,例如$customer,而不仅仅是$cust。没有人说缩短变量名是编写精益代码的一种方法;)。缩短变量名称是不好的(代码味道),因为它使代码对其他人和将来自己的可读性降低。
  • 使用此$mailToManufacturer之类的套管,而不是使用下划线。这是一个普遍的协议(标准),因此也有利于可读性和对代码的理解。