Я использую помощник FlashMessenger для установки сообщений, но я не могу получить сообщения, используя метод getMessages (). он возвращает null. вот мой пример кода:
<?php class Admin_TestController extends Zend_Controller_Action { protected $_flashMessenger = null; public function init() { $this->_flashMessenger = $this->_helper->getHelper('FlashMessenger'); $this->initView(); } public function myAction() { $this->_flashMessenger->addMessage('test message'); $this->_helper->Redirector("mynextrequest"); } public function mynextrequestAction() { zend_debug::dump($this->_flashMessenger->getMessages()); $this->render(); } }
Чтобы исправить эту проблему, вам необходимо отредактировать библиотеку / Zend / Controller / Action / Helper / FlashMessenger.php
найдите строку:
self::$_session->{$this->_namespace}[] = $message;
и изменить его на
//self::$_session->{$this->_namespace}[] = $message;
$sessionMessages = self::$_session->{$this->_namespace};
$sessionMessages[] = $message;
self::$_session->{$this->_namespace} = $sessionMessages;
Эта проблема влияет только на php 5.2, поэтому они решили не исправлять ее и вместо этого предлагают обновить версию PHP.
i обновляется с php 5.2.0 до 5.2.9, и проблема решена.
кроме проблем с капиталом функции / класса, убедитесь, что Zend_Session настроен, запущен и имеет метод хранения, который работает. Он будет использовать ваш метод хранения сеанса, который исходит из new Zend_Session_Namespace('FlashMessenger')
Существуют версии PHP 5.2.x, которые имеют проблемы с
// Zend_Controller_Action_Helper_FlashMessenger :: addMessage () (строка 143)
self :: $ _ session -> {$ this -> _ namespace} [] = $ message;
Обновление PHP было бы решением (как и вы) или заменой вышеуказанной строки следующим кодом:
$ messages = self :: $ _ session -> {$ this -> _ namespace};
$ messages [] = $ message;
self :: $ _ session -> {$ this -> _ namespace} = $ messages;
У меня возникла проблема, связанная с двумя вызовами ajax, которые использовали flashMessenger, и заканчивали загрузку в случайном порядке. Таким образом, первый вызов ajax иногда загружался первым и, таким образом, используя сообщения и не оставлял ни одного для второго; и я ожидал сообщения об ошибках во втором вызове ajax и задавался вопросом, почему они показывают примерно 50% случаев.