我们很高兴地宣布 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 转换, 例如转换 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`
此前,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
首先,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
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',
]
],
]
在 Yii 的 Redis 的扩展现在支持使用 UNIX socket 连接,它相比基于TCP的连接能快 50%。要使用它,配置 Redis 的连接如下:
[
'class' => 'yii\redis\Connection',
'unixSocket' => '/var/run/redis/redis.sock',
]