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());
                // ....
            }
        }
    }
    
    
    • +21
    • 16,9k
    • 3
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 3

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.