2015-05-29 47 views
11

我想包括在Yii2 - 如何以包括視圖文件外部JS和CSS

前端/視圖/佈局/ main.php

我的插件和自定義的js文件所以我使用此代碼爲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文件在視圖文件中?

回答

6

包括它就像你提到的不歡迎和定義不是「Yii風格」。

有幾種方法可以做到這一點:

1)使用的資產包。它不一定要放在AppAsset包中。默認情況下,它是通用包,幷包含在主佈局中,因此所有包含的資產都將在每個視圖中發佈。

您可以創建自己的AssetBundle。

請注意,對於外部資產(即在Web訪問目錄之外),您需要使用sourcePath,否則 - basePathbaseUrl屬性。

有了這兩個選項,您在常見情況下都需要做的事情 - 填寫$js$css陣列和$depends以設置依賴關係(如果需要)。

您可以通過以下鏈接閱讀更多內容。

2)使用registerCssFile()registerJsFile()

第一種方法是優選的,並在官方文檔中推薦。它爲您提供了依賴關係處理等等。

官方文檔:

+0

當我使用這段代碼時,js腳本顯示在視圖文件中,但它的顯示網址未找到「site.loc /frontend/web/js/classie.js」,同時css文件夾中的文件工作很好..如何糾正JS文件404錯誤? – Kartz

+0

這只是意味着你指定錯誤的路徑和文件不存在這裏。 – arogachev

3

如果你想在特定的視圖腳本或CSS文件,你可以使用這個:

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

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

對於CSS:

<?php $style= <<< CSS 

    // CSS code here 

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

對於JS:

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

這工作得很好。

相關問題