Вторая версия отличного php-фреймворка yii2 уверенно развивается и стабильные версии выходят регулярно раз в месяц. Новая версия является патч-релизом yii 2.0 и содержит около 40 улучшений и исправлений. Полный список можно найти на гитхабе.
Инструкции по установке или обновлению до последней версии можно найти на официальном сайте.
Самые значимые изменения
Алиасы маршрутов
В предыдущих версиях, фреймворк поддерживал только алиасы для путей файлов и 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');
Алиасы маршрутов удобно использовать когда в процессе разработки маршрут может измениться и тогда не будет надобности в поиске всех точек использования изменившегося маршрута.
Конфигурация компонентов
Многие компоненты имеют свойства, которые необходимо задать для инициализации конкретного экземпляра компонента. Иногда, требуется использование компонента без его описания в настройках приложения. В таких случаях параметры компонента можно задать массивом при его инициализации:
$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());
}
}
Постоянные ссылки
При использовании yii\behaviors\SluggableBehavior, с помощью свойства immutable, можно запретить последующее изменение ссылки. Даже при изменении значения атрибута value, ссылка останется неизменной, при immutable = true. Обработка ошибок DatePicker Теперь yii\jui\DatePicker поддерживает language fallback. Удобно, когда при указании локали идентификатором, например de-DE, виджет не сможет найти файл /ui/i18n/datepicker-de-DE.js, он попытается открыть фал /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());
// ....
}
}
}
Вместо заключения
Продолжаю следить за развитием yii2. В данный момент в работе 2 небольших проекта. Использование такого инструмента, как yii 2.0, упрощает многие моменты и, в тоже время, заставляет расти вместе с фреймворком.