Хроники Yii3
625 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://yangx.top/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
#yiisoftYiiView #МажорныйРелиз #Релиз

🎁 Yii View Extension 4.0.0

Инъекция CSRF вместо токена теперь добавляет объект CSRF с методами (PR):

- getToken() возвращает токен;

- getParameterName() возвращает имя параметра из мидлвари CsrfMiddleware;

- getHeaderName() возвращает имя заголовка из мидлвари CsrfMiddleware;

- hiddenInput() возвращает тег Input с установленными атрибутами type (hidden), name (имя параметра), value (токен);

- __toString() для преобразования в строку (возвращается токен).

⚡️ #yiisoftDemo #yiisoftApp #yiisoftYiiSwagger

Соответствующие изменения внесены в демо веб-приложения (PR), шаблон веб-приложения и пакет Yii Swagger.
⚡️ #yiisoftForm

В пакете Yii Form доработан виджет Radio и добавлена подробная документация по нему (PR), а также внесены небольшие изменения в документацию по виджету Checkbox (PR).
⚡️ #yiisoftYiiConsole #yiisoftDemo

Почистили код и внесли изменения в Yii Console (PR, PR):

- в приложении (Application) диспетчер событий сделан опциональным, а его установка перенесена из конструктора в метод setDispatcher();
- обновлены dev-зависимости;
- добавлены тесты;
- в тестах вместо yiisoft/di теперь используется пакет yiisoft/test-support;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.

Адаптационные изменения внесены в демо веб-приложения (PR).
⚡️ #yiisoftRouter

Теперь роутер (пакет Yii Router) автоматически отвечает на запросы OPTIONS в том же источнике со статусом 204, ранее отвечал 405 Method not allowed (PR).

Это поведение можно отключить с помощью метода withoutAutoResponseOptions().
⚡️ #yiisoftMiddlewareDispatcher

Диспетчер событий в Yii Middleware Dispatcher сделан опциональным (PR).
⚡️ #yiisoftVarDumper

В пакете Yii VarDumper добавлен метод VarDumper::withOffset(), позволяющий задать строку, которая будет использоваться для вложенности кода (PR).

С помощью нового метода можно заменить 4 пробела, используемые по умолчанию, на 2 пробела или табы или любую другую строку.

Спасибо Антону @WinterSilence за PR 👍
⚡️ #yiisoftYiiSwagger #yiisoftDemo #yiisoftDemoApi

В пакете Yii Swagger добавлена возможность конфигурирования SwaggerUI (PR).

По умолчанию включена параметр persistAuthorization. Полный список параметров доступен в документации Swagger.

Соответствующие изменения внесены в демо веб-приложения (PR) и демо API-приложения (PR).

Спасибо Алексею Черноусову за PR 👍
⚡️ #yiisoftPackageTemplate

В пакете-шаблоне Yii Package Template в конфигурации процессов GitHub добавлены файлы-исключения, при изменении которых процессы запускаться НЕ будут (PR).

Это такие файлы, как README.md, CHANGELOG.md, .gitignore и т. д.
⚡️ #yiisoftYiiDebug

Исправления и улучшения в Yii Debug:

• исправлена ошибка при сборе запросов в случае возникновения внутренней ошибки сервера (PR);

• из зависимостей удалили пакет yiisoft/composer-config-plugin (PR);

• поправили тесты (PR).
⚡️ #yiisoftForm

Улучшения в пакете Yii Form:

• в методе Form::csrf() добавили поддержку CSRF-токена в виде`Stringable`-объекта (PR);

• доработали виджет CheckboxList и добавили подробную документацию по нему (PR);

• доработали виджет RadioList и добавили подробную документацию по нему (PR);

• почистили код тестов (PR).
⚡️ #yiisoftTranslatorExtractor #yiisoftDemo

В пакете Yii Message Extractor изменили пространство имён с Yiisoft\Translator\Extractor на Yiisoft\TranslatorExtractor (PR).

Демо веб-приложения адаптировано к этим изменениям (PR).
#yiisoftArrays #МажорныйРелиз #Релиз

🎁 Yii Arrays 2.0.0

• Добавлен метод ArrayHelper::group(), группирующий элементы массива по заданному ключу.

• Финализированы классы ArrayHelper и ArraySorter.

• В методах ArrayHelper::map(), ArrayHelper::index(), ArrayHelper::group(), ArrayHelper::htmlEncode() и ArrayHelper::htmlDecode() добавлена поддержка iterable-объектов.

• Исправлена ошибка в методе ArrayHelper::getValue(): в некоторых случаях возвращалось некорректное значение, если требуемый ключ не существует в массиве, а значение по умолчанию является массивом.

—————

#yiisoftVarDumper #МинорныйРелиз #Релиз

🎁 Yii VarDumper 1.2.0

• Добавлен метод VarDumper::withOffset(), позволяющий задать строку, которая будет использоваться для вложенности кода.

• Добавлена поддержка yiisoft/arrays версии ^2.0.

—————

#yiisoftHtml #ПатчРелиз #Релиз

🎁 Yii HTML 2.2.1

• Добавлена поддержка yiisoft/arrays версии ^2.0.
⚡️ #yiisoftRouterFastroute

По согласованию RFC методы GET и HEAD идентичны, сервер должен поддерживать оба с одним и тем же URL-адресом. FastRoute не поддерживает это автоматически, но в адаптере Yii Router FastRoute Adapter мы реализовали это соглашение (PR).
⚡️ #yiisoftAppApi

Обновили инструкцию по установке шаблона API-приложения в readme (PR).
⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftDemo

Добавлена возможность генерации URL с учётом локали в роутере Yii Router (PR) и адаптере Yii Router FastRoute Adapter (PR).

Пример использования:

// Конфигурация генератора URL
$urlGenerator->setLocales(['en' => 'en-US', 'ru' => 'ru-RU', 'uz' => 'uz-UZ']);
$urlGenerator->setLocaleParameterName('_locale');

// Генерация URL
$urlGenerator->generate('test', ['_locale' => $locale]);

Это возможность роутера применена в демо веб-приложения (PR, PR).
⚡️ #yiisoftConfig

Большое обновление Yii Config (PR, PR).

• Конфигурации из vendor теперь НЕ копируются в приложение.

• Логика объединения конфигов:
- конфигурации объединяются послойно: окружение → приложение → вендор;
- между слоями разрешено переопределение;
- в рамках одного слоя запрещено использовать одинаковые ключи.

• Добавлены модификаторы объединения, задаваемые в конструкторе класса Config:
- RecursiveMerge::groups() — указанные группы будут объединяться рекурсивно,
- ReverseMerge::groups() — порядок ключей в итоговом массиве будет обратен порядку объединения,
- RemoveFromVendor::keys() — указанные ключи конфигурации не будут учитываться при получении конфигураций из vendor.

• Добавлена возможность использовать в качестве параметров любую группу конфигураций вместо params.

• Добавлена команда yii-config-copy для копирования конфигурационных файлов из вендора в приложение (при этом эти файлы автоматически в сборку НЕ попадают, это нужно сделать вручную).

• Добавлена команда yii-config-rebuild для обновления плана слияния.

• Удалён параметр output-directory, осталась только source-directory, задающая папку с конфигурациями.

• Удален весь интерактив, отслеживание изменений файлов и служебный файл dist.lock

• План слияния переименован в .merge-plan.php.

—————

⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi

Приложения адаптированы к этому обновлению:

Шаблон веб-приложения (PR),
Шаблон API-приложения (PR),
Демо веб-приложения (PR),
Демо API-приложения (PR).
#yiisoftView #МажорныйРелиз #Релиз

🎁 Yii View 4.0.0

• Добавлен интерфейс ViewInterface, который реализуют классы View и WebView.

• Улучшено сообщение об ошибке при получении несуществующего блока или параметра из View или WebView.

• При изменении контекста с помощью методов View::withContext() или `WebView::withContext()`теперь сбрасывается список текущих генерируемых представлений.

—————

#yiisoftViewTwig #ПатчРелиз #Релиз

🎁 Yii View Twig Renderer 2.0.1

• Добавлена поддержка yiisoft/view версии ^4.0.
⚡️ #yiisoftConfig

В пакете Yii Config чтобы указать, что конфигурация используется без окружения, теперь можно передать как null, так и пустую строку (PR) + в readme добавлена информация об использовании пакета в PHAR-архивах (PR).
#yiisoftMailer #ПатчРелиз #Релиз

🎁 Yii Mailer Library 3.0.2

• Версия yiisoft/view обновлена до ^4.0 (PR).
⚡️ #yiisoftForm

В пакете Yii Form доработали виджеты и добавили подробную документацию по ним:

- DateTime (PR),
- DateTimeLocal (PR),
- Email (PR),
- Date (PR),
- File (PR),
- Range (PR),
- Number (PR),
- Password (PR).
⚡️ #yiisoftDemo

В демо веб-приложения добавлены примеры использования мидлвари Yiisoft\Yii\Web\Middleware\HttpCache для добавления HTTP-заголовков Last-Modified и ETag (PR).