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&amp;mysql(一)
Oct 09 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
隐性调用php程序的方法
Mar 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
php数组指针函数功能及用法示例
Feb 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解压tar.gz格式文件的方法
2016/02/14 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
Python struct模块解析
2014/06/12 Python
python修改注册表终止360进程实例
2014/10/13 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
打包发布Python模块的方法详解
2016/09/18 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
一份全面的PHP面试问题考卷
2012/07/15 面试题
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
求职信内容考虑哪几点
2013/10/05 职场文书
优秀应届生推荐信
2013/11/09 职场文书
保险公司早会主持词
2014/03/22 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
python绘制箱型图
2021/04/27 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python