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中处理模拟rewrite 效果
Dec 09 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
初识Laravel
Oct 30 PHP
帝国cms常用标签汇总
Jul 06 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
php similar_text()函数的定义和用法
May 12 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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伪造referer实例代码
2008/09/20 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
python连接mongodb集群方法详解
2020/02/13 Python
Python中zip函数如何使用
2020/06/04 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
中国电视购物:快乐购
2017/02/04 全球购物
建筑系毕业生自我鉴定
2014/01/24 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
庆祝儿童节标语
2014/10/09 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
《比尾巴》教学反思
2016/02/24 职场文书