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函数
Jan 11 PHP
php 中文和编码判断代码
May 16 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
关于php循环跳出的问题
Jul 01 PHP
php中JSON的使用与转换
Jan 14 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
php常用数组函数实例小结
Dec 29 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
yii2项目实战之restful api授权验证详解
May 20 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP类的反射用法实例
2014/11/03 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python实现简单的代理服务器
2015/07/25 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
解决DataFrame排序sort的问题
2018/06/07 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python字符串格式化方式解析
2019/10/19 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python3.8下载及安装步骤详解
2020/01/15 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
护理学专业求职信
2014/06/29 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
盗窃案辩护词
2015/05/21 职场文书
《刷子李》教学反思
2016/02/20 职场文书