Yii2: вид модуля рендеринга из основного приложения

Как приложение Yii2 может отображать Controller (не контроллер модуля) представление, предоставляемое модулем, при условии, что модуль следует структуре каталогов, описанной в документация?


person mae    schedule 03.09.2016    source источник


Ответы (1)


Как указано в методе render() вы можете указать представление как:

  • псевдоним пути (например, "@app/views/site/index"); абсолютный путь в приложении (например, "//site/index"): имя представления начинается с двойной косой черты. Фактический файл просмотра будет искаться по пути просмотра приложения.
  • абсолютный путь внутри модуля (например, "/site/index"): имя представления начинается с одной косой черты. Фактический файл представления будет искаться по пути представления $module.
  • относительный путь (например, «индекс»): фактический файл представления будет искаться в $viewPath.

Итак, в случае модуля, упомянутого вами, сделайте это в действии:

return $this->render('@app/modules/forum/views/default/index');

Это отобразит представление с примененным макетом основного приложения. Чтобы использовать макет модуля, добавьте это также в действие:

$this->layout = '@app/modules/forum/views/layouts/main';

Это предполагает вид default/index и макет main в модуле forum.

person Bizley    schedule 03.09.2016
comment
Я хотел бы добавить один важный и невероятно полезный факт: расширения yii2, установленные через композитор, автоматически получают свой собственный псевдоним @vendorname/extensionname. - person mae; 04.09.2016