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 相关文章推荐
初学CAKEPHP 基础教程
Nov 02 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
php中请求url的五种方法总结
Jul 13 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
php集成开发环境详解
Sep 24 PHP
如何在PHP中使用数组
Jun 09 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原理之异常机制深入分析
2010/08/08 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
Python简明入门教程
2015/08/04 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
JSF如何进行表格处理及取值
2012/08/06 面试题
法制宣传标语集锦
2014/06/25 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
SQLServer常见数学函数梳理总结
2022/08/05 MySQL