Ты не.
В MVC-подходе Magento контроллер не несет ответственности за установку переменных для представления (в случае Magento представление - это Layout и blocks). Контроллеры устанавливают значения для Моделей, а затем Блоки считывают из тех же моделей. По мнению Magento о мире, наличие блока, основанного на контроллере, который делает определенную вещь, является тесной связью, и его следует избегать.
Работа вашего контроллера заключается в том, чтобы делать определенные вещи с Моделями, а затем сообщать системе, что время рендеринга макета. Вот и все. Ваша задача «Разметка / блокировка» - отображать HTML-страницу определенным образом в зависимости от состояния моделей системы.
Итак, если бы я хотел эмулировать традиционное поведение PHP MVC, я бы
Создать простой класс Model, наследуемый от Varien_Object
В контроллере создайте экземпляр этого объекта с помощью Mage::getSingleton('foo/bar')
Установите значения в модели с помощью магического геттера / сеттера (вы получаете их в объектах, которые наследуются от Varien_Object
) или setData
и т. Д.
В блоках снова создайте экземпляр модели с помощью Mage::getSingleton('foo/bar')
и прочитайте значения обратно.
Когда вы создаете экземпляр модели с помощью Mage::getSingleton(...)
Magento будет создавать экземпляр объекта в виде одиночного . Итак, если вы повторно создаете экземпляр объекта (снова с помощью Mage::getSingleton('foo/bar')
), вы получаете тот же объект.