Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源


Posted in PHP onJune 22, 2014

这回要说的是,如何给 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 资源。

PHP 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
php中的观察者模式简单实例
Jan 20 PHP
php实现的RSS生成类实例
Apr 23 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 #PHP
PHP延迟静态绑定示例分享
Jun 22 #PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 #PHP
解决cPanel无法安装php5.2.17
Jun 22 #PHP
destoon设置自定义搜索的方法
Jun 21 #PHP
destoon后台网站设置变成空白的解决方法
Jun 21 #PHP
destoon常用的安全设置概述
Jun 21 #PHP
You might like
php 模拟POST提交的2种方法详解
2013/06/17 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
js获取Get值的方法
2016/09/29 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
JS实现简单日历特效
2020/01/03 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
Python合并字符串的3种方法
2015/05/21 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python随机模块random使用方法详解
2020/02/14 Python
python 利用toapi库自动生成api
2020/10/19 Python
html5唤起app的方法
2017/11/30 HTML / CSS
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
经理秘书岗位职责
2013/11/14 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
质量保证书格式
2015/02/27 职场文书
自我检讨书怎么写
2015/05/07 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python