這回要說的是,如何給 Yii2 項目添加外部資源(external assets),以 FontAwesome 為例子。
Yii2 開始使用 composer 來做項目的依賴管理,這貨是類似于 NodeJS 里面 npm 的東東,可以自動獲取 Github 上最新版本的第三方庫(比如 Bootstrap 啦,FontAwesome 啦之類的)。按官方教程裝好后,就可以開始初始化項目了。
一、初始化項目
通過 Composer 來初始化
1
|
php composer.phar create-project --prefer-dist --stability=dev yiisoft /yii2-app-basic basic |
然后開始碼代碼,Model Controller View 神馬的,此處按下不表。
二、安裝 FontAwesome
終于,你的項目發展到需要引用第三方庫了,我們仍然通過 Composer 來安裝。搜索packagist.org官方的包列表,我們找到了 FontAwesome 的配置。將 FortAwesome/Font-Awesome": "*" 添加到項目的 composer.json 配置文件里。
1
2
3
4
5
6
7
8
9
10
11
12
|
// ... "require" : { "php" : ">=5.4.0" , "hybridauth/hybridauth" : "dev-master" , "FortAwesome/Font-Awesome" : "*" , // <- 這里 "yiisoft/yii2" : "*" , "yiisoft/yii2-swiftmailer" : "*" , "yiisoft/yii2-bootstrap" : "*" , "yiisoft/yii2-debug" : "*" , "yiisoft/yii2-gii" : "*" }, // ... |
然后運行
1
|
php composer.phar update |
從 Github 上拉取 FontAwesome 的包到項目本地。
三、創建 FontAwesome 資源包(asset bundle)
為了使用這些庫,我們需要在項目的 /assets 目錄下創建一個 FontAwesomeAsset.php
1
2
3
4
5
6
7
8
9
10
11
|
namespace assets; use yii\web\AssetBundle; class FontAwesomeAsset extends AssetBundle { // 下面這些資源文件并不在 web 目錄下,瀏覽器無法直接訪問。所以我們需要 // 指定 sourcePath 屬性。注意 @vendor 這個 alias,表示 vender 目錄 public $sourcePath = '@vendor/fortawesome/font-awesome' ; public $css = [ 'css/font-awesome.css' , ]; } |
四、注冊文件,引入資源
有兩種方法。第一種,當你想在某一個特定頁面引入這個資源包
1
2
3
|
// 這兩句直接寫在那一頁的 view 里 use assets\FontAwesomeAsset; FontAwesomeAsset::register( $this ); |
第二種,在你的網站全局引入,或者將其作為另一個資源的依賴引用。在項目的 asset/AppAsset.php 中加上它:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class AppAsset extends AssetBundle { public $basePath = '@webroot' ; public $baseUrl = '@web' ; public $css = [ 'css/site.css' , ]; public $js = [ ]; public $depends = [ 'yii\web\YiiAsset' , 'yii\bootstrap\BootstrapAsset' , // 在這里加上我們的 FontAwesomeAsset 包類 'assets\FontAwesomeAsset' ]; } |
刷新頁面,看看是不是已經引入了對應的 css、js 資源。