Yii 2.0.1
Нам очень приятно объявить о выходе версии 2.0.1 PHP фреймворка Yii. Подробнее о том, как установить эту версию или обновиться на неё читайте на странице http://www.yiiframework.com/download/.
Версия 2.0.1 — патч-релиз ветки 2.0, содержащий около 90 небольших улучшений и исправлений. Полный список изменений можно почитать на GitHub. Кроме улучшений самого кода была проделана значительная работа по документации. Особенно по полному руководству по Yii 2.0, переводимому на множество языков. Спасибо всем, кто подарил нам часть своего драгоценного времени улучшая Yii.
За разработкой фреймворка можно следить, поставив звёздочку или нажав watch на странице проекта на GitHub. Также можно подписаться на Twitter и присоединиться к группе в Facebook.
Далее будут рассмотрены самые важные изменения.
Принудительная конвертация ресурсовЧерез asset bundle можно конвертировать ресурсы автоматически. Например, LESS в CSS. Тем не менее, отслеживать все изменения в исходных файлах довольно затратно. Особенно когда сделан импорт одного ресурса в другом. В подобных случаях можно конвертировать ресурсы принудительно. Для этого компонент assetManager настраивается следующим образом:
[ '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` Предотвращение повторной загрузки CSS при AJAX запросах В Yii уже были средства для предотвращения повторной загрузки JavaScript при AJAX запросах. Теперь есть и для CSS. Для использования данной возможности требуется регистрация YiiAsset как показано ниже:
yii\web\YiiAsset: register ($view); Очистка кеша схемы базы данных Мы добавили новую команду для очистки кеша схемы базы данных. Она будет полезна для выкладывания кода на рабочие серверы. Команда запускается следующим образом:
yii cache/flush-schema Улучшения в хелперах Метод Html: cssFile () теперь поддерживает опцию noscript, предназначенную для оборачивания генерируемого тега link в тег noscript. Данную опцию также можно использовать при настройке AssetBundle: cssOptions. К примеру:
use yii\helpers\Html; echo Html: cssFile ('/css/jquery.fileupload-noscript.css', ['noscript' => true]); Ранее StringHelper: truncate () поддерживал обрезку простой строки до заданного количества символов или слов. Теперь поддерживается и 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 CSS фреймворк Bootstrap обновлён до версии 3.3.x. Если вы хотите использовать старую версию, можете указать её явно в composer.json проекта.
В виджеты Bootstrap добавлены новые свойства, подробно описанные в документации по API.
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 теперь отображаются на отладочной панели. Чтобы её использовать следуют настроить отладчик следующим образом:
[ 'class' => 'yii\debug\Module', 'panels' => [ 'mongodb' => [ 'class' => 'yii\mongodb\debug\MongoDbPanel', ] ], ] Улучшения расширения Redis Расширение Redis теперь поддерживает работу через сокеты UNIX, что часто на 50% быстрее работы через TCP. Соединение настраивается следующим образом:
[ 'class' => 'yii\redis\Connection', 'unixSocket' => '/var/run/redis/redis.sock', ]