這回要說的是,如何給 Yii2 項目添加外部資源(external assets),以 FontAwesome 為例子。
Yii2 開始使用 composer 來做項目的依賴管理,這貨是類似於 NodeJS 裡面 npm 的東東,可以自動獲取 Github 上最新版本的第三方庫(比如 Bootstrap 啦,FontAwesome 啦之類的)。按官方教程裝好後,就可以開始初始化項目了。
一、初始化項目
通過 Composer 來初始化
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 配置文件裡。
// ...
"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": "*"
},
// ...
然後運行
php composer.phar update
從 Github 上拉取 FontAwesome 的包到項目本地。
三、創建 FontAwesome 資源包(asset bundle)
為了使用這些庫,我們需要在項目的 /assets 目錄下創建一個 FontAwesomeAsset.php
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',
];
}
四、注冊文件,引入資源
有兩種方法。第一種,當你想在某一個特定頁面引入這個資源包
// 這兩句直接寫在那一頁的 view 裡 use assets\FontAwesomeAsset; FontAwesomeAsset::register($this);
第二種,在你的網站全局引入,或者將其作為另一個資源的依賴引用。在項目的 asset/AppAsset.php 中加上它:
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 資源。