Intereting Posts
Получение IPAddress через прокси с PHP? Использование переменной javascript для установки переменной PHP Каков наилучший способ преобразования существующего PHP-класса в Java? Symfony 2 – Маршрутизация домашней страницы php проверяет, содержит ли строка значение в массиве Установите lang по умолчанию, используя php MySql – конвертировать InnoDB в MyISAM Storage Engine для базы данных Пользовательский конфигурационный файл для codeigniter Изменение размера изображения после загрузки Как использовать параметр каскада в Doctrine2, чтобы связанные объекты автоматически сохранялись? Сравнение десятичных знаков в PHP PHP 5.4 Переадресация времени звонка – доступно легкое исправление? Как заставить DOM Parser ждать выполнения сценариев перед анализом данных Использование строкового пути для установки данных вложенных массивов Не удалось загрузить запрошенный класс: сеанс

Задача zend Framework FlashMessenger

Я использую помощник 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(); } } 

Related of "Задача zend Framework FlashMessenger"

Чтобы исправить эту проблему, вам необходимо отредактировать библиотеку / 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% случаев.