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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
一个简单实现多条件查询的例子
Oct 09 PHP
xajax写的留言本
Nov 25 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP加密技术的简单实现
Sep 04 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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生成静态页面教程
2012/01/10 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python去掉字符串中重复字符的方法
2014/02/27 Python
在Python中使用异步Socket编程性能测试
2014/06/25 Python
python实用代码片段收集贴
2015/06/03 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
图解Python变量与赋值
2018/04/03 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
Python短信轰炸的代码
2020/03/25 Python
python爬虫---requests库的用法详解
2020/09/28 Python
Python项目打包成二进制的方法
2020/12/30 Python
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
元旦晚会邀请函
2014/02/01 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
新员工试用期自我评价
2015/03/10 职场文书
企业员工辞职信范文
2015/05/12 职场文书
丧事主持词
2015/07/02 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python