0

Я спросил question о том, что такое «рендеринг вида». Получил ответы на некоторые вопросы:В чем разница между «визуализацией представления» и отправкой ответа с использованием метода Response «sendResponse()»?

Оказание вида означает показ вида html пользователя или браузера.

и

Таким образом, визуализируя вид, рамки MVC обработали данные в контроллере и сделали бэкэнд работу в модели, а затем посылают эти данных в View, чтобы быть вывода пользователю.

и

делают просто означает, что для излучения. Печатать. Эхо. Чтобы написать в какой-то источник (возможно, stdout).

, но не понимает, то разницы между rendering a view и используя Response класс для отправки выходных данных пользователя, используя свой метод sendResponse(). Если render a view означает эхо-выход для пользователя, то почему sendResponse() существует и наоборот? sendResponse() точно передает заголовки, а после заголовков выдает тело. Они решают одни и те же задачи, но по-разному? В чем разница?

+1

Вы говорите, что Zend Framework в частности? – drew010

+0

Я изучаю Zend Framework, чтобы понять, что такое MVC. Так что не Zend Framework в частности. Symfony также использует термин «render a view» и не имеет большой информации о том, что это такое. – Green

+0

@Green вы найдете много, если не все рамки mvc используют очень похожую терминологию – dm03514

ответ

3

В ZF рендеринг представления фактически не выводит никакого контента. Вместо этого процесс рендеринга возвращает содержимое в виде строки для вызывающего. Zend_Application автоматически выполняет поиск рендеринга и вставляет его в макет (при условии, что вы используете макеты) через местозаполнитель, и помещал эти данные в объект Zend_Controller_Response_Http, который в конечном счете несет ответственность за доставку контента пользователю. Причиной для объекта Response является то, что он может инкапсулировать ваш вывод HTML, а также управлять любыми дополнительными заголовками HTTP или перенаправлениями, которые вы хотите отправить.

Вы также можете манипулировать дальнейшим содержимым ответа в объекте Response, прежде чем отправлять данные клиенту, если хотите.

sendResponse() позаботится о отправке любых заголовков (включая код ответа HTTP), проверяет наличие каких-либо исключений (из-за невозможности отправки заголовков или других причин), а затем отправляет HTML-код, который может включать ваш макет и один или несколько визуализированных сценариев просмотра.

Надеюсь, что это поможет.

2

Это две разные вещи.

Рендеринг представления предоставляет другой уровень, на котором вы можете создавать шаблоны своих данных. Это позволит вам легко динамически заполнять HTML/шаблоны, сохраняя логику отдельно от презентации.

Echoing data напрямую пропускает этот шаг и обычно зарезервирован для повторного ответа json/xml (data) на пользователя вместо ответа html.

Вы не опубликовали фразу, о которой вы говорите, но оба должны позволять вам указывать заголовки ответов.

Пожалуйста, не упрощайте. Цель каждого сервера - рендеринг ресурсов, но это не значит, что они все одинаковы.