[英]Call to a member function toArray() on array in FlashMessenger
我的ZF2 FlashMessenger中出現以下錯誤:
在第306行上的/vendor/zendframework/zend-mvc/src/Controller/Plugin/FlashMessenger.php中的數組上調用成員函數toArray()
FlashMessages將由我的FlashMessageHelper呈現:
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
use Zend\View\Helper\FlashMessenger;
class FlashMessageHelper extends AbstractHelper {
public function __invoke(FlashMessenger $flashMessenger) {
$flashMessenger->setMessageOpenFormat('<div%s><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><p class="text-center">');
$flashMessenger->setMessageSeparatorString('</p><p class="text-center">');
$flashMessenger->setMessageCloseString('</p></div>');
$flashMessenger->setAutoEscape(false);
echo $flashMessenger->render('error', array(
'alert',
'alert-dismissible',
'alert-danger'
));
echo $flashMessenger->render('info', array(
'alert',
'alert-dismissible',
'alert-info'
));
echo $flashMessenger->render('default', array(
'alert',
'alert-dismissible',
'alert-warning'
));
echo $flashMessenger->render('success', array(
'alert',
'alert-dismissible',
'alert-success'
));
}
}
?>
有人知道這個錯誤嗎? 這是第一次發生此錯誤。 Google和“ zend-mvc”(回購)問題對此沒有說明。
感謝您的關注!
在ZF2(最佳實踐)中看到以下內容:
插件FlashMessenger將您的消息發送到等待池(通過FlashMessenger Zend MVC 插件 ),該池將在另一個頁面請求(通過ViewHelper FlashMessenger)上顯示。
您可以將四種消息與Bootstrap通知集成( 錯誤,信息,默認,成功 )。
現在練習
在Controller內的Action中,您必須輸入消息和品牌:
use Zend\Mvc\Controller\Plugin\FlashMessenger;
public function registerAction(){
if($formValid){
$this->flashMessenger()->addSucessMessage('Saved!');
} else{
$this->flashMessenger()->addErrorMessage('Fail!');
}
//redirect to other route and show message
return $this->redirect()->toRoute('app');
}
在View (.phtml)中,您只需要使用:
#show messages of addErrorMessage();
echo $flash->render('error', array('alert', 'alert-dismissible', 'alert-danger'));
#show messages of addInfoMessage();
echo $flash->render('info', array('alert', 'alert-dismissible', 'alert-info'));
#show messages of addMessage();
echo $flash->render('default', array('alert', 'alert-dismissible', 'alert-warning'));
#show messages of addSucessMessage();
echo $flash->render('success', array('alert', 'alert-dismissible', 'alert-success'));
在View中 ,如果使用Bootstrap :
$flash = $this->flashMessenger();
$flash->setMessageOpenFormat('<div>
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">
×
</button>
<ul><li>')
->setMessageSeparatorString('</li><li>')
->setMessageCloseString('</li></ul></div>');
echo $flash->render('error', array('alert', 'alert-dismissible', 'alert-danger'));
echo $flash->render('info', array('alert', 'alert-dismissible', 'alert-info'));
echo $flash->render('default', array('alert', 'alert-dismissible', 'alert-warning'));
echo $flash->render('success', array('alert', 'alert-dismissible', 'alert-success'));
現在,如果您想在屏幕上查看FlashMessages而沒有請求頁面或重定向頁面(對於表單錯誤的理想選擇,您不將其重定向或將AJAX重定向到另一頁面),請使用此技術。
public function registerAction(){
if($formValid){
$this->flashMessenger()->addSucessMessage('Saved!');
} else{
#add to pool
$this->flashMessenger()->addErrorMessage('Fail');
#merge message
$feedback = array_merge(
$this->flashMessenger->getErrorMessages(),
$this->flashMessenger->getCurrentErrorMessages()
);
#clear pool
$this->clearCurrentErrorMessages();
}
#message in variable to VIEW
new ViewModel(array(
'feedback' => $feedback,
));
}
}
如果您想進一步完善它,請遵循Zend 2官方文檔的鏈接,該文檔提供了可用方法的嘗試,將有很大幫助:
查看 -> http://framework.zend.com/manual/current/en/modules/zend.view.helpers.flash-messenger.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.