Yii 2.0.2

Команда 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: 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 ()); // … } } }

© Habrahabr.ru