Zend Framework 2.2.0에서 flashMesssenger를 사용하여 한 동작에서 다른 동작으로 메시지를 전달합니다.flashmessenger가 새 메시지를 표시하지 않습니다.
이메일이 발송 된 후 홈 페이지로 사용자를 전달하는 문의 양식이 있습니다.
public function contactUsExecuteAction() {
$request = $this->getRequest();
if ($request->isPost()) {
$contactUs = new ContactUs();
$form = new ContactUsForm();
$form->setInputFilter($contactUs->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$contactUs->exchangeArray($form->getData());
$name = $contactUs->name;
$email = $contactUs->email;
$message = $contactUs->message;
$completeMessage='name:'.$name."\n".'email:'.$email."\n".$message;
$subject = 'myalcoholist contact us';
mail('<EMAIL_ADDRESSS>',$subject,$completeMessage);
$this->flashMessenger()->addMessage("thank you for contacting myalcoholist.");
return $this->forward()->dispatch('home');
}
}
}
는 지금은 앞으로 그냥 페이지를 전달하고 나는 내가 getCurrentMessages을 사용하지 않는, 단지 다음 반복의 메시지가하기로되어있어 이해합니다. 그래서 이것은 내 layout.phtml에 있습니다.
<?php
use Zend\Mvc\Controller\Plugin\FlashMessenger;
$messenger = $this->flashMessenger()->getPluginFlashMessenger();
foreach(array(
FlashMessenger::NAMESPACE_ERROR,
FlashMessenger::NAMESPACE_SUCCESS,
FlashMessenger::NAMESPACE_INFO,
FlashMessenger::NAMESPACE_DEFAULT)
as $namespace):
$messenger->setNamespace($namespace);
$userMsgs = array_merge($messenger->getCurrentMessages(), $messenger->getMessages());
$messenger->clearCurrentMessages();
foreach($userMsgs as $msg):
$msgText = $msg;
if (is_array($msg)){
$msgText = $msg['message'];
}
?>
<div class="alert alert-<?=$namespace?>">
<?=$msgText?>
</div>
<?php endforeach ?>
<?php endforeach ?>
하지만 아무런 메시지가 없습니다! 그것은 사용자를 올바르게 전달하지만 그게 그 것이다.
어떤 아이디어가 있습니까?
:
는 이제보기 훨씬 좋네요 내부의보기 도우미를 사용할 수 있습니다 문제를 일으키는 레이아웃 내부의 플러그인 ..? 이 경우에 View Helper를 만드는 것이 더 낫습니다. – Andrew