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一个找二层目录的小东东
Aug 02 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
PHP中的日期加减方法示例
Aug 21 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PDO实现学生管理系统
Mar 21 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
用header 发送cookie的php代码
2007/03/16 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
python获取目录下所有文件的方法
2015/06/01 Python
Python制作简单的网页爬虫
2015/11/22 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Python单例模式的两种实现方法
2017/08/14 Python
详解django三种文件下载方式
2018/04/06 Python
Python实现代码统计工具
2019/09/19 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
为什么要使用servlet
2016/01/17 面试题
诚实守信道德模范事迹材料
2014/08/15 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL