Yii2 - Как включить внешний файл js и css в файл

Я пытаюсь включить мои плагины и пользовательские js файлы в

Frontend/просмотров/макеты/main.php

Итак, я использовал этот код для js и css

<link rel="stylesheet" href="<?= Yii::$app->homeUrl; ?>chosen/chosen.css">
<script type="text/javascript" src="<?= Yii::$app->homeUrl; ?>js/jquery.fancybox.pack.js?v=2.1.5"></script>

но не работает. Итак, что я должен включить, чтобы получить файлы js и css в файле вида?

Ответ 1

В том числе, как вы упомянули, не приветствуется и определенно не "стиль Yii".

Есть несколько способов сделать это:

1) Используйте пакеты активов. Не обязательно размещать его в пакете AppAsset. По умолчанию это общий пакет и включен в основной макет, поэтому все включенные активы будут опубликованы во всех представлениях.

Вы можете создать свой собственный AssetBundle.

Обратите внимание, что для внешних активов (находящихся за пределами веб-каталога) вам нужно использовать sourcePath, иначе - basePath и baseUrl.

С двумя параметрами все, что вам нужно сделать в общем случае: заполнить $js и $css массивы и $depends для установки зависимостей, если это необходимо.

Вы можете узнать больше по ссылке ниже.

2) Используйте registerCssFile() и registerJsFile().

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

Официальные документы:

Ответ 2

Для CSS:

<?php $style= <<< CSS

   // CSS code here 

 CSS;
 $this->registerCss($style);
?>

Для JS:

<?php 
 $script = <<< JS
   // Js Code Here 
 JS;
 $this->registerJs($script);

Это отлично работает.

Ответ 3

Если вы хотите включить script или файл css в определенное представление, вы можете использовать это:

$this->registerJsFile("/path/to/your/file/in/web/folder/script.js");

или

$this->registerCssFile("/path/to/your/file/in/web/folder/style.css");