Подтвердить что ты не робот

Разность Yii между функциями рендеринга

Меня иногда путают три метода рендеринга:

  • Controller::render()
  • Controller::renderPartial()
  • Controller::renderFile()

Пожалуйста, не могли бы вы объяснить. Спасибо!

4b9b3361

Ответ 1

render() обычно используется для визуализации представления, которое соответствует тому, что пользователь видит как "страница" в вашем приложении. Сначала он отображает указанное вами представление, а затем отображает макет для текущего действия контроллера (если применимо), помещая результат первого рендера в макет. Затем он выполняет обработку вывода (которая в это время означает автоматическую вставку любых необходимых тегов <script> и обновление динамического содержимого) и, наконец, выводит результат.

renderPartial() обычно используется для визуализации "части" страницы. Основное отличие от render() заключается в том, что этот метод не помещает результаты рендера в макет. По умолчанию он также не выполняет обработку вывода, но вы можете переопределить это поведение с помощью параметра $processOutput.

renderFile() - это низкоуровневый метод, который выполняет грубую работу рендеринга: он извлекает переменные данных в текущей области и затем запускает код представления. Другие два метода внутренне называют это, но вам практически не нужно называть это самим. Если вы это сделаете, имейте в виду, что вам нужно пройти по пути к файлу (а не по пути просмотра).

Ответ 2

Файл рендеринга:

Запустит методы рендеринга в заданном файле с помощью установленного механизма рендеринга. Это довольно низкий уровень в Yii и только реально используется внутри или в консольных командах.

Render Partial:

Это присваивает псевдоним и преобразует его в путь к файлу, используя все локальные переменные, такие как текущие текущие контроллеры и модули и определения псевдонимов. Тогда он в значительной степени просто использует файл рендеринга.

Render

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

Надеюсь, что это очистит.

Ответ 3

renderPartial() действительно полезен для отображения компонентов ssi на странице, то есть заголовков, нижних колонтитулов, виджетов и т.д.