От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы познакомимся с темой Yii2 Assets или, иными словами, подключением ресурсов из папки web: в первую очередь — это файлы JS и CSS.
В прошлой статье мы с вами познакомились с понятием ресурс и комплект ресурсов в Yii. Говоря простыми словами, комплект ресурсов (Assets) — это ни что иное, как набор подключаемых файлов, в первую очередь скриптов и стилей (css и js).
Подключить свой комплект ресурсов просто, достаточно открыть класс AppAsset и в свойствах $js и $css перечислить в формате массива подключаемые файлы. Сами файлы JS и CSS необходимо поместить в публичную папку web. В этом случае подключаемые файлы будут сразу же доступны.
В данной статье мы продолжим начатую тему и узнаем, как указать в шаблоне, какой именно комплект ресурсов необходимо подключить (комплектов может быть несколько) и как подключить ресурсы, которые находятся вне публичной папки.
Начнем с первого вопроса. Подключить нужный комплект ресурсов можно вызвав метод register. Именно подключение AppAsset и можно найти в шаблоне \views\layouts\main.php:
Соответственно, если вам необходимо зарегистрировать другой комплект ресурсов из папки assets — укажите именно его. Все просто.
Ну а теперь второй вопрос: как использовать пакет ресурсов, который находится не в папке web, т.е. в папке, которая не видна из вне? Это может потребоваться в том случае, когда вы, к примеру, создаете модуль админки, для которой будут использованы свои файлы стилей и скриптов. В принципе, все ресурсы в этом случае можно поместить в папку web, но все же вы вполне можете захотеть поместить их в папку модуля.
Чтобы решить проблему, нам потребуется вместо свойств $basePath и $baseUrl воспользоваться свойством $sourcePath. Значением этого свойства мы и укажем папку с ресурсами. Для примера давайте создадим файл admin.js в следующей структуре каталогов: \modules\admin\web\js\admin.js
Теперь определим новый комплект ресурсов AdminAsset:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php namespace app\assets; use yii\web\AssetBundle; class AdminAsset extends AssetBundle { public $sourcePath = '@app/modules/admin/web'; public $css = []; public $js = [ 'js/admin.js', ]; public $depends = []; } |
Обратите еще раз внимание, мы вместо свойств $basePath и $baseUrl использовали свойство $sourcePath, в котором указали путь (path) к папке с необходимыми ресурсами для админки. Далее в шаблоне регистрируем искомый комплект ресурсов:
1 |
AdminAsset::register($this); |
После чего мы должны увидеть результат работы нового скрипта:
Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.
Комментарии (1)