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 相关文章推荐
phpMyAdmin 安装及问题总结
May 28 PHP
php fckeditor 调用的函数
Jun 21 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
php准确计算复活节日期的方法
Apr 18 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 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
DIY实用性框形天线
2021/03/02 无线电
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
form中限制文本字节数js代码
2007/06/10 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
js函数调用的方式
2014/05/06 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
JS实现Ajax的方法分析
2016/12/20 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python set集合类型操作总结
2014/11/07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
学校食堂采购员岗位职责
2013/12/05 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
药品促销活动方案
2014/02/14 职场文书
财务人员担保书
2014/05/13 职场文书
创先争优一句话承诺
2014/05/29 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
mysql序号rownum行号实现方式
2022/12/24 MySQL