Глобальные переменные 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) { }

Author: Siarhey Uchukhlebau, 2016-08-08

2 answers

Я думаю, что использование глобальной переменной $_SESSION является решением для вас, потому что после перенаправления ваш сервер удаляет все переменные $_REQUEST.

Вот ответ на аналогичную проблему:

Глобальные переменные не являются постоянными между HTTP-запросами, как перенаправление. Вы должны использовать сеанс для хранения этих данных между запросы.

 0
Author: Siarhey Uchukhlebau, 2017-05-23 12:37:16

Я бы посоветовал использовать реестр Magento, а не устанавливать значения с помощью переменной GET.

// Set the registry value
Mage::register('test', TRUE);

// Gets the registry value
$registryValue = Mage::registry('test');

Конечно, если он перенаправляет ваш запрос, то это тоже не сработает:)

 1
Author: Paul, 2016-08-08 12:45:19