问题 Yii2 - 如何在视图文件中包含外部js和css


我正在尝试包含我的插件和自定义js文件

前端/视图/布局/ 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文件?


12230
2018-05-29 07:50


起源



答案:


像你提到的那样包括它不受欢迎,并且定义不是“Yii风格”。

有几种方法可以做到这一点:

1) 使用资产包。它不一定要放入 AppAsset 束。默认情况下,它是常见的捆绑包并包含在主布局中,因此所有包含的资产都将在每个视图中发布。

您可以创建自己的AssetBundle。

请注意,对于外部资产(在Web可访问目录之外),您需要使用 sourcePath, 除此以外 - basePath 和 baseUrl 属性。

有了这两个选项,你需要做的就是常见的情况 - 填充 $js 和 $css 数组和 $depends 用于设置依赖项(如果需要)。

您可以通过以下链接阅读更多内容。

2) 使用 registerCssFile() 和 registerJsFile()

第一种方法更可取,并在官方文档中推荐。它为您提供依赖性处理等等。

官方文件:


6
2018-05-29 08:09



当我使用此代码时,js脚本显示在视图文件中,但其显示的url未找到“site.loc / frontend / web / js / classie.js”并且同时css文件夹中的文件正常工作。如何纠正js文件404错误? - Kartz
这只是意味着你指定了错误的路径,这里不存在文件。 - arogachev


答案:


像你提到的那样包括它不受欢迎,并且定义不是“Yii风格”。

有几种方法可以做到这一点:

1) 使用资产包。它不一定要放入 AppAsset 束。默认情况下,它是常见的捆绑包并包含在主布局中,因此所有包含的资产都将在每个视图中发布。

您可以创建自己的AssetBundle。

请注意,对于外部资产(在Web可访问目录之外),您需要使用 sourcePath, 除此以外 - basePath 和 baseUrl 属性。

有了这两个选项,你需要做的就是常见的情况 - 填充 $js 和 $css 数组和 $depends 用于设置依赖项(如果需要)。

您可以通过以下链接阅读更多内容。

2) 使用 registerCssFile() 和 registerJsFile()

第一种方法更可取,并在官方文档中推荐。它为您提供依赖性处理等等。

官方文件:


6
2018-05-29 08:09



当我使用此代码时,js脚本显示在视图文件中,但其显示的url未找到“site.loc / frontend / web / js / classie.js”并且同时css文件夹中的文件正常工作。如何纠正js文件404错误? - Kartz
这只是意味着你指定了错误的路径,这里不存在文件。 - arogachev


如果您想在特定视图中包含脚本或css文件,可以使用以下命令:

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

要么

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

4
2017-08-22 03:55





对于CSS:

<?php $style= <<< CSS

   // CSS code here 

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

对于JS:

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

这很好用。


4
2017-10-25 06:20