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 相关文章推荐
PHPMailer安装方法及简单实例
Nov 25 PHP
windows下开发并编译PHP扩展的方法
Mar 18 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
smarty获得当前url的方法分享
Feb 14 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
PHP递归调用数组值并用其执行指定函数的方法
Apr 01 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 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/02/05 PHP
PHP仿盗链代码
2012/06/03 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
Nginx跨域问题解析与解决
2022/08/05 Servers