Как загрузить макет во время выполнения в Magento? - PullRequest
0 голосов
/ 03 октября 2011

Я знаю, что мы можем спроектировать макет в *.xml, затем в action просто вызовем loadLayout и renderLayout для рендеринга blocks/views.

Но у меня есть вопросis:

- Как я могу загрузить макет во время выполнения?

Если у нас есть действие, которое на самом деле не разрабатывает его макет и будет решено, как его отобразить во время выполнения.

Вы можете рассмотреть ответ из вопрос для большей ясности.

Ответы [ 2 ]

4 голосов
/ 03 октября 2011

Написание нового ответа, потому что кажется, что вы действительно ДОЛЖНЫ рендерить, вы просто хотите рендерить обновления XML макета другого маршрута. Я считаю, что метод _forward() из Mage_Core_Controller_Varien_Action позволит вам делать то, что вы описываете, с наименьшим количеством боли.

Вы должны добавить каталог своего контроллера действий перед каталогом каталога, создать ProductController с viewAction и проверить, что клиент не вошел - в этой проверке вы бы позвонили $this->_forward('customer','account','login');.

Однако этот подход потребует больше усилий, чтобы его можно было использовать, так как я предполагаю, что вы хотите, чтобы пользователь отправлялся на страницу продукта при входе в систему. Вы видели Модуль каталога только для входа в систему Vinai Kopp ? Это должно сделать это для вас.

2 голосов
/ 03 октября 2011

loadLayout() и renderLayout() просто выполняют метод вывода блока toHtml() (обычно), принимают полученные строки и применяют их к объекту ответа через appendBody(). В контроллере действий вы можете просто позвонить $this->getResponse()->setBody('response string'). Как вы строите строку, зависит от вас.

Вы также можете использовать Mage_Core_Block_Flush для немедленной отправки вывода в браузер без использования объекта ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...