Глобальные переменные Magento отображаются пустыми
У меня есть пользовательский модуль, который подписывается на событие под названием catalog_product_collection_apply_limitations_after
. В наблюдателе я устанавливаю переменную (например, $_GET['test'] = true
)
Затем позже в моем файле .phtml
я обращаюсь к нему, чтобы выполнить логику, основанную на переменной. Он хорошо работает, однако, как только он будет запущен в одном из интернет-магазинов нашего клиента, все глобалы, такие как $_GET
, $_POST
, $_REQUEST
кажется пустым.
Я предполагаю, что происходит перенаправление, но затем я спрашиваю себя, зачем кому-то это делать, так как это определенно портит большинство сторонних расширений. Но все же я могу ошибаться.
Какие-либо другие идеи о том, почему это должно происходить?
P.S Вот подмножество дампа var переменной $GLOBALS
во внешнем интерфейсе:
Массив(16) {["_GET"]=>массив(1) { ["предел"]=>строка(2) "12"} ["_POST"]=>массив(0) { }
2 answers
Я думаю, что использование глобальной переменной $_SESSION
является решением для вас, потому что после перенаправления ваш сервер удаляет все переменные $_REQUEST
.
Вот ответ на аналогичную проблему:
Глобальные переменные не являются постоянными между HTTP-запросами, как перенаправление. Вы должны использовать сеанс для хранения этих данных между запросы.
Я бы посоветовал использовать реестр Magento, а не устанавливать значения с помощью переменной GET.
// Set the registry value
Mage::register('test', TRUE);
// Gets the registry value
$registryValue = Mage::registry('test');
Конечно, если он перенаправляет ваш запрос, то это тоже не сработает:)