【问题标题】:How do we use more than one message in flashMessenger using zend framework我们如何使用 zend 框架在 flashMessenger 中使用多个消息
【发布时间】:2011-12-01 05:52:29
【问题描述】:

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

【问题讨论】:

  • 这些答案都没有帮助到你吗?

标签: php zend-framework zend-mail


【解决方案1】:

您是否在视图脚本中使用strip_tags 或类似的东西?这可能会导致&lt;br /&gt; 标签被剥离。

还可以通过为每个地址调用一次flashMessenger-&gt;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');    

【讨论】:

  • 感谢您的回复。不,我没有使用任何 strip_tags。我也尝试过使用多个如你所说的 flash messanger,但我收到了我们休息的消息。
  • 我使用 $this->view->messages = $this->_helper->flashMessenger->getMessages();在 indexAction 中。并使用以下代码打印消息 messages)) { ?>
    messages as $message) { ?> escape($message); ?>
【解决方案2】:

你的问题

之所以将所有内容组合在一起,是因为您将 echo 循环播放,无需额外标记。

类似的东西呢:

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

但是,事实上,有一种更好的方法来处理视图中的 flashMessenger。如您所知,Zend FlashMessenger 是一个动作助手。但是还有一个很棒的视图助手可以帮助你很好地输出你的消息。最好的一点是,您可以传递array('warning' =&gt; 'This is a warning'),数组键(警告)将用作&lt;p&gt; 标签的类。你可以找到information about this helper on Carlton Gibson's blogadditional explanations in this SO question

您的变量命名需要改进

  • 写出可读的变量名,比如$customer,而不仅仅是$cust。没有人说过缩短变量名是编写精简代码的一种方法;)。缩短变量名称是不好的(代码异味),因为它会降低代码对其他人和您自己未来的可读性。
  • 使用像$mailToManufacturer 这样的大小写而不是使用下划线。这是一个通用协议(标准),因此也有助于代码的可读性和理解。

【讨论】:

  • 谢谢,但我在这里给出了所有的变量名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多