2014-12-07 8822次浏览
  1. 强制 Asset 转换
  2. 选择子查询
  3. 防止在 AJAX 中加载 CSS
  4. 刷新架构缓存
  5. 增强助手类
  6. 增强 Bootstrap 扩展
  7. 增强 MongoDB 扩展
  8. 增强 Redis 扩展

我们很高兴地宣布 Yii 2.0.1 发布了。请参考说明 http://www.yiiframework.com/download/ 安装或升级到此版本。

版本 2.0.1 是 Yii 2.0 的一个补丁版本。其中包含了大约 90 个小的新功能和 bug 修复。更新的完整列表可以在 更新日志 中找到。除了代码的改进,也有很多文档的改进,尤其是 Yii 2.0 的权威指南 已被翻译成多种语言。在此,我们要感谢那些花宝贵时间帮助改进 Yii 的贡献者,因为你们才能使发布成为可能。

你可以关注 Yii 2 的开发进度,starring 或 watching Yii 2.0 GitHub 项目。你可以关注 Yii Twitter 订阅或者加入 Yii Facebook 群 去接触其他 Yii 开发者。

下面我们总结了一些包含在这个版本最重要的特点。

强制 Asset 转换

Asset 包支持自动 asset 转换, 例如转换 LESS 为 CSS。然而在源 assets 变更时适当的检测资源的代价是昂贵的,特别是一个资源被另一个导入。为了解决这个问题,您现在只需要配置 assetManager 如下总是强制转换 assets:

[
    'components' =>  [
        'assetManager' => [
            'converter' => [
                'forceConversion' => true,
            ]
        ]
    ]
];

选择子查询

查询生成器支持在不同的地方使用子查询。现在,您还可以在SELECT部分使用子查询。例如,

$subQuery = (new Query)->select('COUNT(*)')->from('user');
$query = (new Query)->select(['id', 'count' => $subQuery])->from('post');
// $query represents the following SQL:
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`

防止在 AJAX 中加载 CSS

此前,Yii 有防止在 AJAX 响应加载同一个 JavaScript 文件的支持。它现在还支持防止在 AJAX 响应加载相同的 CSS 文件。要使用此功能,您只需要像下面这样简单地使用 YiiAsset 资源包:

yii\web\YiiAsset::register($view);

刷新架构缓存

一个新的控制台命令添加了,允许您刷新架构缓存。这在更改生产服务器的代码部署导致DB模式是非常有用的。只需运行命令,如下所示:

yii cache/flush-schema

增强助手类

Html::cssFile() 方法现在支持 noscript 选项,这将把生成的链接标签在一个noscript标记。您也可以在配置 asset 包的 AssetBundle::cssOptions 属性时使用此选项。例如,

use yii\helpers\Html;
 
echo Html::cssFile('/css/jquery.fileupload-noscript.css', ['noscript' => true]);

之前的 StringHelper::truncate() 只支持截断纯文本的字符串截取。它现在支持截取 HTML 字符串,并确保截取的结果仍然是一个有效的 HTML 字符串。 Inflector 类得到一个新的方法名字为 sentence() 可以连接几个词成句。例如,

use yii\helpers\Inflector;
 
$words = ['Spain', 'France'];
echo Inflector::sentence($words);
// output: Spain and France
 
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words);
// output: Spain, France and Italy
 
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words, ' & ');
// output: Spain, France & Italy

增强 Bootstrap 扩展

首先,Twitter Bootstrap 升级到了版本 3.3.x。如果你想坚持使用旧版本,你可以明确在你的项目中 composer.json 文件中指定。

新特性增加了几个 Bootstrap 小部件。请参阅 类参考 更多详细信息。

yii\bootstrap\ButtonDropdown::$containerOptions
yii\bootstrap\Modal::$headerOptions
yii\bootstrap\Modal::$footerOptions
yii\bootstrap\Tabs::renderTabContent
yii\bootstrap\ButtonDropdown::$containerOptions

增强 MongoDB 扩展

findAndModify 操作现在由 yii\mongodb\Query 和 yii\mongodb\ActiveQuery 支持。例如,

User::find()->where(['status' => 'new'])->modify(['status' => 'processing']);

调试面板同样添加显示MongoDB 查询执行。要使用此面板,只需要像下面这样配置 Yii 调试器,

[
    'class' => 'yii\debug\Module',
    'panels' => [
        'mongodb' => [
            'class' => 'yii\mongodb\debug\MongoDbPanel',
        ]
    ],
]

增强 Redis 扩展

在 Yii 的 Redis 的扩展现在支持使用 UNIX socket 连接,它相比基于TCP的连接能快 50%。要使用它,配置 Redis 的连接如下:

[
    'class' => 'yii\redis\Connection',
    'unixSocket' => '/var/run/redis/redis.sock',
]