Команда PHP фреймворка рада сообщить о выходе версии 2.0.2. Инструкции по установке и обновлению можно найти по адресу http://www.yiiframework.com/download/.
Версия 2.0.2 является патч-релизом Yii 2.0 и содержит около 40 небольших улучшений и исправлений. Полный список изменений можно найти на GitHub. Спасибо всем, кто нам помогал подготовить этот релиз.
Если хотите следить за процессом разработки Yii 2 можно поставить звёздочку или использовать кнопку watch на странице проекта на GitHub. Также у нас есть Twitter и Facebook.
Рассмотрим наиболее значительные дополнения данного релиза.
До 2.0.2 Yii поддерживал псевдонимы путей и URL. Теперь можно задавать псевдонимы для маршрутов. После задания псевдонима маршрута его можно использовать при создании URL методами
Данная возможность пригодится если предполагаются изменения в структуре маршрутов. При использовании псевдонима не придётся менять код создания URL.
Свойства многих компонентов принимают ID других компонентов, таких как
Если вы разрабатываете новый класс, зависимый от внешних компонент, то можете использовать следующий код для предоставления аналогичной возможности:
Код выше позволяет настроить свойство
Если вы используете
Виджет
Класс
Версия 2.0.2 является патч-релизом Yii 2.0 и содержит около 40 небольших улучшений и исправлений. Полный список изменений можно найти на GitHub. Спасибо всем, кто нам помогал подготовить этот релиз.
Если хотите следить за процессом разработки Yii 2 можно поставить звёздочку или использовать кнопку watch на странице проекта на GitHub. Также у нас есть Twitter и Facebook.
Рассмотрим наиболее значительные дополнения данного релиза.
Псевдонимы маршрута
До 2.0.2 Yii поддерживал псевдонимы путей и URL. Теперь можно задавать псевдонимы для маршрутов. После задания псевдонима маршрута его можно использовать при создании URL методами
Url::to()
и Url::toRoute()
:use yii\helpers\Url;
Yii::setAlias('@posts', 'post/index');
// /index.php?r=post/index
echo Url::to(['@posts']);
echo Url::toRoute('@posts');
Данная возможность пригодится если предполагаются изменения в структуре маршрутов. При использовании псевдонима не придётся менять код создания URL.
Конфигурирование зависимых компонентов
Свойства многих компонентов принимают ID других компонентов, таких как
yii\caching\DbCache::db
или yii\web\CacheSession::cache
. Иногда для того, чтобы не создавать новый компонент для юнит-тестирования, вам может понадобиться задать такое свойство при помощи массива конфигурации:$cache = Yii::createObject([
'class' => 'yii\caching\DbCache',
'db' => [
'class' => 'yii\db\Connection',
'dsn' => '...',
],
]);
Если вы разрабатываете новый класс, зависимый от внешних компонент, то можете использовать следующий код для предоставления аналогичной возможности:
use yii\base\Object;
use yii\db\Connection;
use yii\di\Instance;
class MyClass extends Object
{
public $db = 'db';
public function init()
{
$this->db = Instance::ensure($this->db, Connection::className());
}
}
Код выше позволяет настроить свойство
db
одним из следующих значений:- строкой с ID компонента приложения;
- объектом класса
yii\db\Connection
; - массивом конфигурации, который может использоваться для создания экземпляра
yii\db\Connection
.
Неизменяемый slug
Если вы используете
yii\behaviors\SluggableBehavior
, то теперь можете присвоить новому свойству immutable
значение true
. В этом случае однажды созданный slug не будет меняться при повторном сохранении модели. Это полезно для SEO: однажды проиндексированное содержимое останется по тому же URL.Автоматический выбор альтернативного языка виджетом DatePicker
Виджет
yii\jui\DatePicker
теперь автоматически выбирает альтернативный язык, если указанный язык не найден. Это полезно в том случае, когда вы задаёте свойство language
как ID локали, который содержит регион и/или вариант. К примеру, если задать language
в de-DE
и виджет не найдёт языкового файла /ui/i18n/datepicker-de-DE.js
, то автоматически будет использован язык de
и файл /ui/i18n/datepicker-de.js
.Передача ошибок валидации
Класс
yii\base\Model
теперь содержит метод addErrors()
, который позволяет передать ошибки валидации одной модели в другую. К примеру, если у вас есть класс формы для модели ActiveRecord и вам необходимо передать ошибки валидации формы в модель ActiveRecord, сделать это можно так:use yii\base\Model;
use yii\db\ActiveRecord;
class MyForm extends Model
{
public $model;
public function process()
{
// ...
if (!$this->validate()) {
$this->model->addErrors($this->getErrors());
// ....
}
}
}