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 mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
PHP实现变色验证码实例
Jan 06 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 PHP
PHP实现简单的计算器
Aug 28 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP文件操作详解
2016/12/30 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
优秀食品类广告词
2014/03/19 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
张丽莉观后感
2015/06/16 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
如何使用pdb进行Python调试
2021/06/30 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL