В Magento, что обычно делает контроллер? - PullRequest
1 голос
/ 26 апреля 2011

Я видел несколько базовых примеров контроллеров, где в своем методе indexAction () они делают что-то вроде echo «Это действие индекса». Но в реальных приложениях этот метод возвращает длинную строку html, начинающуюся с ?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

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

$this->loadLayout();
$this->renderLayout(); 

Использование echo - это быстрое сокращение, которое позволяет разработчику временно игнорировать всю систему макетов и просто сосредоточиться на запуске правильного действия.

Надеюсь, это немного прояснит ситуацию!

Спасибо, Джо

1 голос
/ 27 апреля 2011

Примеры, которые вы видели, просто показывают вам, что код в контроллере выполняется.То, что вы должны делать в контроллере Magento, это

  1. Манипулировать моделями на основе значений из запроса (получить, отправить и т. Д.)

  2. Скажите Magento загрузить и визуализировать макет, который будет составлять ответ

Система компоновки / блока считывает данные непосредственно из классов модели системы, поэтому нет необходимости делать что-либо, связанное с выводомв контроллере (это не на 100% верно, но если вы знаете причины, по которым это не на 100% верно, вам не нужно читать это далеко в ответе)

Если вы посмотрите на контроллеры Magento Core, вы 'Если большинство из них заканчивается на

$this->loadLayout();
$this->renderLayout(); 

Это строки, которые начинают вывод.Нет echo требуется.

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