Yii 2.0.2

Команда PHP фреймворка рада сообщить о выходе версии 2.0.2. Инструкции по установке и обновлению можно найти по адресу https://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());
            // ....
        }
    }
}
 
Оригинал: https://habrahabr.ru/post/247741/
Читать далее »

Обновил платформу на Yii Booster 2 и Yii 1.1.14

Обновил платформу для разработки. Теперь у меня стоит YiiBooster 2 и Yii 1.1.14. 

YiiBooster 2 кстати не всегда корректно работает с Yii версии 1.1.13 и младше, у меня виджет TbExtendedGrid отказывался запускаться с этой конфигурацией. 

Читать далее »

Обновление блога

Обновление блога, он теперь на Yii. От MODX решил отказаться. 

За предыдущую ночь было наспамлено 2000 комментариев, пришлось срочно поставить каптчу. Использовал цифровую каптчу, потому что простые буквенные слишком банальны и не всегда надежны. После установки поток спама прекратился, но вычищать комменты пришлось долго. 

В качестве админки взял Boo Admin, которую я купил для одного из своих предыдущих проектов, этот шаблон мне очень нравиться. Саму админку сделал само собирающейся, то есть модули Yii хранят навигацию и параметры, которые надо выводить в админку. При инициализации гланый модуль админки проходиться по всем модулям и собирает с них данные. Данные представляют из себя массив, который можно прямо запихнуть в поле items виджета стандартного виджета CMenu. 

Читать далее »

Новый редактор в Yii

Буквально на днях на форуме yiiframework.ru стартовал сбор средств на покупку OEM-лицензии для проектов на Yii неплохого WYSIWYG Imperavi Redactor.

Я выступал в роли фонда. 400$ собрали всего за четыре дня, что очень удивило и обрадовало. В ту же ночь подпилили расширение в YiiExt и выкатили всё на публику.

Теперь, если пользуетесь Yii, можете пользоваться бесплатно и Redactor.

https://rmcreative.ru/blog/post/imperavi-redactor--kuplena-oem-litsenzija-dlja-yii

Прекрасно!

Читать далее »

Начальные сборки на Yii

Найдено на Хабре:

 Структура приложения – это одна из основных причин, по которой PHP программисты превращаются из “изобретателей колеса” в пользователей фреймворков. Строгие соглашения о структуре приложения и именовании позволяют нам избавиться от тонны кода, сделать рабочий процесс предсказуемым и объединить усилия команды для быстрого и качественного написания ценного бизнес функционала – без вечного рефакторинга роутеров, контроллеров и тд

Yii Framework имеет консольную команду для создания основного костяка приложения, который позволяет практически сразу начать работу над веб-приложением. Gii Модуль позволяет создавать каркассы классов моделей, контроллеров и универсальных CRUD интрерфейсов. Однако, если функциональность вашего приложения находится за пределами обычного вебсайта, — фреймворк сам по себе уже не имеет встроенных помощников для создания комплексной архитектуры. 

И, хотя, все добротные схемы организационной структуры приложения описаны и хорошо известны (на самом деле, не так уж и “хорошо”), это не освобождает нас от шаблонного конструирования в новых проектах время от времени. Здесь приходит на помощь готовый скелет структуры приложения.

https://habrahabr.ru/sandbox/51747/

Пользуюсь YiiBoilerplate в своем последнем проекте. Отличная штука. 

Читать далее »

Юнит тестирование моделей в Yii

Найдено:

Сейчас я расскажу про применение техники TDD для разработки моделей, используя Yii-framework.
Изначально предполагается, что была прочитана тема «Тестирование» из официального мануала (https://yiiframework.ru/doc/guide/ru/test.overview).

Итак, окружение настроено и сейчас нашей задачей будет — создать модели категории и продуктов(Category, Product) и покрыть их тестами.

https://habrahabr.ru/post/147491/

Читать далее »

Yii 1.1.11

Команда Yii зарелизила версию 1.1.11, в которую вошли более ста улучшений и багфиксов.

Этот релиз особенный потому как является первым с тех пор, как код Yii мигрировал на GitHub. Сообщество восприняло миграцию очень хорошо ивыложилось по полной, прислав в виде pull-request новые возможности, исправления, unit-тесты и переводы.

За всё это огромное спасибо! Особенно отметим: resurtm, DaSourcerer, cebeи suralc.

Можно ознакомиться со списком изменений и новыми возможностями. Если планируете обновиться, внимательно читайте инструкции.

Читать далее »
Scroll To Top