Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源

2015-01-24信息快讯网

前天帮同事改个十年前的网站 bug,页面上一堆 include require 不禁让人抱头痛哭。看到 V2EX 上的讨论说,写 PHP 不用框架等同于耍流氓。Yii Framework 是我使用了 2 年多的 PHP 框架,器大活好,皮实耐操。 Yii2 还在 Beta 中,不过不影响拿来预研。

这回要说的是,如何给 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字符串比较函数strcmp()和strcasecmp()使用总结
php中time()与$_SERVER[REQUEST_TIME]用法区别
php中getservbyport与getservbyname函数用法实例
PHP自定session保存路径及删除、注销与写入的方法
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
php数组排序usort、uksort与sort函数用法
php使用fsockopen函数发送post,get请求获取网页内容的方法
javascript some()函数用法详解
PHP使用json_encode函数时不转义中文的解决方法
php json转换成数组形式代码分享
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
php实现webservice实例
PHP实现UTF-8文件BOM自动检测与移除实例
用 Composer构建自己的 PHP 框架之使用 ORM
用 Composer构建自己的 PHP 框架之设计 MVC
用 Composer构建自己的 PHP 框架之构建路由
php 模拟 asp.net webFrom 按钮提交事件实例
php出现web系统多域名登录失败的解决方法
Chrome Web App开发小结
分享一个php 的异常处理程序
浅析application/x-www-form-urlencoded和multipart/form-data的区别
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
destoon安装出现Internal Server Error的解决方法
PHP base64编码后解码乱码的解决办法
PHP安全的URL字符串base64编码和解码
CI框架自动加载session出现报错的解决办法
用PHP代替JS玩转DOM的思路及示例代码
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
浅谈PHP调用Webservice思路及源码分享
php5.2以下版本无json_decode函数的解决方法
浅析php中json_encode()和json_decode()
php定时计划任务与fsockopen持续进程实例
PHP解析html类库simple_html_dom的转码bug
php中curl、fsocket、file_get_content三个函数的使用比较
PHP批量检测并去除文件BOM头代码实例
codeigniter框架The URI you submitted has disallowed characters错误解决方法
CodeIgniter框架提示Disallowed Key Characters的解决办法
PHP批量删除、清除UTF-8文件BOM头的代码实例
C#使用PHP服务端的Web Service通信实例
php使用json_encode对变量json编码
php警告Creating default object from empty value 问题的解决方法
©2014-2024 dbsqp.com