⚡️ #yiisoftValidator
Несколько доработок в Yii Validator.
• Добавили документацию и переименовали правила (PR):
-
-
• Добавили документацию к правилам
Несколько доработок в Yii Validator.
• Добавили документацию и переименовали правила (PR):
-
Boolean
→ BooleanValue
,-
IsTrue
→ TrueValue
.• Добавили документацию к правилам
Regex
, Number
, In
и HasLength
, а также немного поправили документацию в других правилах (PR).👍3
#yiisoftValidator #ПервыйРелиз #МажорныйРелиз #Релиз
🎁 Yii Validator 1.0
Первая стабильная версия валидатора выпущена 🎉
Пакет позволяет проверять данные в любом формате — массивы, объекты, скалярные значения и т. д. Например, валидация объекта будет выглядеть следующим образом:
- Поддержка произвольных наборов данных.
- Обработка вложенных структур (один к одному и один ко многим).
- Поддержка PHP атрибутов.
- Форматирование и перевод сообщений об ошибках.
- Перевод имён атрибутов.
- Условная валидация.
- Возможность передать контекст валидации в обработчики правил.
- Основные правила валидации из коробки.
- Поддержка DI-контейнера для получения обработчиков правил с зависимостями.
- Экспорт правил для использования на фронтенде.
Подробности смотрите в Readme и документации.
📗 А также читайте обзорную статью «Yii Validator — простой и мощный» от Сергея Предводителева.
🎁 Yii Validator 1.0
Первая стабильная версия валидатора выпущена 🎉
Пакет позволяет проверять данные в любом формате — массивы, объекты, скалярные значения и т. д. Например, валидация объекта будет выглядеть следующим образом:
use Yiisoft\Validator\Rule\AtLeast;Результат валидации — объект, который позволяет проверить, прошла ли проверка успешно:
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Length;
use Yiisoft\Validator\Rule\Number;
use Yiisoft\Validator\Rule\Required;
use Yiisoft\Validator\Validator;
#[AtLeast(['email', 'phone'])]
final class Person
{
public function __construct(
#[Required]
#[Length(min: 2)]
public ?string $name = null,
#[Number(min: 21)]
public ?int $age = null,
#[Email]
public ?string $email = null,
public ?string $phone = null,
) {
}
}
$person = new Person(
name: 'John',
age: 17,
email: '[email protected]',
phone: null
);
$result = (new Validator())->validate($person);
$result->isValid();А также получить все ошибки:
$result->getErrorMessages();Основные возможности
- Поддержка произвольных наборов данных.
- Обработка вложенных структур (один к одному и один ко многим).
- Поддержка PHP атрибутов.
- Форматирование и перевод сообщений об ошибках.
- Перевод имён атрибутов.
- Условная валидация.
- Возможность передать контекст валидации в обработчики правил.
- Основные правила валидации из коробки.
- Поддержка DI-контейнера для получения обработчиков правил с зависимостями.
- Экспорт правил для использования на фронтенде.
Подробности смотрите в Readme и документации.
📗 А также читайте обзорную статью «Yii Validator — простой и мощный» от Сергея Предводителева.
🔥18👍8🎉5👏1🏆1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 1.1.0
• Добавлен иммутабельный метод
• Добавлено новое правило
• В
• В трейте
😎 Релиз подготовили Алексей Рогачёв, Александр Макаров и Сергей Предводителев.
🎁 Yii Validator 1.1.0
• Добавлен иммутабельный метод
Validator::withDefaultSkipOnEmptyCondition()
, позволяющий указать условие "пустоты" по умолчанию.• Добавлено новое правило
StringValue
, которое проверяет, что значение является строкой.• В
WhenEmpty
добавлена проверка на "пустоту" iterable-объектов.• В трейте
CountableLimitTrait
в качестве лимита разрешено указывать 0
.😎 Релиз подготовили Алексей Рогачёв, Александр Макаров и Сергей Предводителев.
🔥8
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 1.2
• Добавлено правило
• В методах
• Добавлен сборщик отладочной информации для Yii Debug.
• Для параметра
• В условиях "пустоты" значений
• Выполнен небольшой рефакторинг метода
• Исправлено ошибочное экранирование символа
🎁 Yii Validator 1.2
• Добавлено правило
OneOf
.• В методах
Result::getAttributeErrorMessagesIndexedByPath()
и Result::getErrorMessagesIndexedByPath()
добавлен параметр $escape
, который позволяет указать экранируемый символ в пути валидируемого элемента или полностью отключить экранирование.• Добавлен сборщик отладочной информации для Yii Debug.
• Для параметра
$skipOnEmpty
указан более конкретный psalm-тип.• В условиях "пустоты" значений
NeverEmpty
, WhenEmpty
, WhenMissing
и WhenNull
параметр $isAttributeMissing
сделан опциональным.• Выполнен небольшой рефакторинг метода
EmailHandler::validate()
.• Исправлено ошибочное экранирование символа
*
при использовании метода Error::getValuePath(true)
.👍6👾1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 1.3
• Добавлено правило
• Добавлены правила
• В классе
• Уточнены psalm-типы в классе
🎁 Yii Validator 1.3
• Добавлено правило
Image
для валидации размеров изображения.• Добавлены правила
Date
, DateTime
и Time
для валидации даты/времени.• В классе
Result
добавлены методы addErrorWithFormatOnly()
и addErrorWithoutPostProcessing()
.• Уточнены psalm-типы в классе
Result
.👍10👾1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 1.4
• Добавлены правила, проверяющие тип значения —
• Добавлено правило
• Добавлено правило
• В объекте
-
-
-
🎁 Yii Validator 1.4
• Добавлены правила, проверяющие тип значения —
boolean
, float
, integer
и string
.• Добавлено правило
UniqueIterable
, которое проверяет, что массив содержит только уникальные значения.• Добавлено правило
AnyRule
, позволяющее связывать правила логическим "ИЛИ".• В объекте
Result
добавлены новые методы:-
getFirstErrorMessagesIndexedByPath()
,-
getFirstErrorMessagesIndexedByAttribute()
,-
add()
.👍11👾2
#yiisoftValidator #ПатчРелиз #Релиз
🎁 Yii Validator 1.4.1
• Устранено "протекание" параметров в контексте валидации, что в некоторых случаях приводило к ошибкам при выполнении валидации через контекст (
🎁 Yii Validator 1.4.1
• Устранено "протекание" параметров в контексте валидации, что в некоторых случаях приводило к ошибкам при выполнении валидации через контекст (
$context->validate()
).👍4👾1
#yiisoftValidator #МажорныйРелиз #Релиз
🎁 Yii Validator 2.0
• Добавлено правило
• В именах классов/трейтов/методов/переменных слово "attribute" заменено на "property".
• Переименованы правила:
-
-
• При создании правила
• Добавлен PHP-атрибут
• Интерфейс
• Метод
• Параметр
• Выполнен рефакторинг метода
• Выполнен рефакторинг обработчика правила
• Изменён тип параметра
• Изменён тип параметра
• Изменён тип параметра
• Для правил, не реализающих
• Встроенные правила валидации в качестви имени правила теперь возвращают полное имя класса.
• В контекст валидации добавлен параметр
• В сообщения об ошибках валидации добавлены имена валидируемых свойств.
• Во встроенных правила в сообщения о некорректном типе валидируемого значения добавлен тип значения.
• Улучшены сообщения об ошибках валидации в правилах
• Исправлено: правила валидации, заданные в виде PHP-атрибутов объекта, не учитывались при нормализации через
• Исправлено: при использовании правила
• Исправлено: при использовании правила
• Уточнены типы в psalm-аннотациях в классе
• Минимальная требуемая версия PHP поднята до 8.1.
• Добавлен перевод сообщений об ошибках валидации на немецкий язык.
Инструкция по обновлению на эту мажорную версию описана в файле UPGRADE.md.
🎁 Yii Validator 2.0
• Добавлено правило
InEnum
, проверяющее, что значение соответствует одному из значений типизированного перечисления.• В именах классов/трейтов/методов/переменных слово "attribute" заменено на "property".
• Переименованы правила:
-
AtLeast
→ FilledAtLeast
;-
OneOf
→ FilledOnlyOneOf
.• При создании правила
FilledAtLeast
добавлена проверка, что значение свойства $min
меньше или равно количеству проверяемых свойств.• Добавлен PHP-атрибут
Label
позволяющий задать имя свойства в сообщениях об ошибках валидации.• Интерфейс
RuleWithOptionsInterface
переименован в DumpedRuleInterface
.• Метод
getName()
перемещён из метода RuleInterface
в DumpedRuleInterface
.• Параметр
$rules
в методе RulesNormalizer::normalize()
сделан опциональным.• Выполнен рефакторинг метода
Result::add()
: для повышения производительности использование метода array_merge()
вынесено за цикл foreach
.• Выполнен рефакторинг обработчика правила
Json
. Для проверки вместо регулярного выражения теперь используются встроенные функции json_validate()
, json_decode()
и json_last_error()
.• Изменён тип параметра
$escape
в методе Error::getValuePath()
с bool|string|null
на string|null
.• Изменён тип параметра
$skipOnEmpty
в конструкуторах правил с mixed
на bool|callable|null
.• Изменён тип параметра
$rule
в методе RuleHandlerInterface::validate()
с object
на RuleInterface
.• Для правил, не реализающих
DumpedRuleInterface
, RulesDumper
теперь использует в качестве имени полное имя класса правила.• Встроенные правила валидации в качестви имени правила теперь возвращают полное имя класса.
• В контекст валидации добавлен параметр
Each::PARAMETER_EACH_KEY
, доступный во время обработки правила Each
и содержащий текущий ключ.• В сообщения об ошибках валидации добавлены имена валидируемых свойств.
• Во встроенных правила в сообщения о некорректном типе валидируемого значения добавлен тип значения.
• Улучшены сообщения об ошибках валидации в правилах
Json
, FilledOnlyOneOf
и FilledAtLeast
.• Исправлено: правила валидации, заданные в виде PHP-атрибутов объекта, не учитывались при нормализации через
RulesNormalizer::normalize()
.• Исправлено: при использовании правила
Nested
имя свойства не передавалось в сообщения об ошибках валидации.• Исправлено: при использовании правила
Each
в сообщение о некорректном ключе передавался тип значения вместо типа ключа.• Уточнены типы в psalm-аннотациях в классе
Result
.• Минимальная требуемая версия PHP поднята до 8.1.
• Добавлен перевод сообщений об ошибках валидации на немецкий язык.
Инструкция по обновлению на эту мажорную версию описана в файле UPGRADE.md.
👍17❤2🔥2👾1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 2.1
• Правила валидации объекта, описанные в виде PHP атрибутов теперь объединяются с правилами, заданными в методе
• Выполнен рефакторинг правила
• Добавлен метод
• Методы
🎁 Yii Validator 2.1
• Правила валидации объекта, описанные в виде PHP атрибутов теперь объединяются с правилами, заданными в методе
getRules()
при реализации интерфейса RulesProviderInterface
.• Выполнен рефакторинг правила
Ip
с более плотным использованием пакета yiisoft/network-utilities
.• Добавлен метод
Ip::getIpRanges()
.• Методы
Ip::getRanges()
, Ip::getNetworks()
и Ip::isAllowed()
помечены устаревшими и будут удалены в следующем мажорном релизе.7🔥5🎉3
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 2.2
• В правиле
• Ограничение версии PHP в
• Минимальная требуемая версия
• Небольшой рефакторинг с использованием возможностей, появившихся в PHP 8.1.
• Исправлена ошибка в правиле
• Исправлена ошибка, возникающая при обработке правила
• Исправлена обработка хука для вложенных объектов, реализующих
• Исправлен русский перевод сообщения об ошибке для правила
🎁 Yii Validator 2.2
• В правиле
Each
добавлен параметр stopOnError
, который позволяет прекратить валидацию следующих элементов, если текущий элемент оказался невалидным.• Ограничение версии PHP в
composer.json
изменено на ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0
.• Минимальная требуемая версия
yiisoft/strings
поднята до ^2.6
.• Небольшой рефакторинг с использованием возможностей, появившихся в PHP 8.1.
• Исправлена ошибка в правиле
Email
, которая возникала в граничном случае, когда используется IDN, пользовательское регулярное выражение и включена DNS-проверка.• Исправлена ошибка, возникающая при обработке правила
URL
в PHP 8.4, когда валидируется пустая строка.• Исправлена обработка хука для вложенных объектов, реализующих
PostValidationHookInterface
, когда используется правило Nested
с заданными правилами.• Исправлен русский перевод сообщения об ошибке для правила
FilledAtLeast
.👍11👾1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 2.3
• Добавлено правило валидации
🎁 Yii Validator 2.3
• Добавлено правило валидации
Uuid
, проверяющее, что значение является строкой с корректным UUID.👍15❤1👾1
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 2.4
• В правиле
• Добавлена возможность использовать
• Исправлена некорректная работа опции
• Исправлена некорректная работа в некоторых случаях использования правила
🎁 Yii Validator 2.4
• В правиле
Nested
добавлена возможность использовать callable
-правила.• Добавлена возможность использовать
stringable
-объекты в качестве сообщения об ошибке.• Исправлена некорректная работа опции
WhenMissing
в правиле Nested
.• Исправлена некорректная работа в некоторых случаях использования правила
Nested
внтури Each
.👍6👾2
#yiisoftValidator #МинорныйРелиз #Релиз
🎁 Yii Validator 2.5
• В объекте
🎁 Yii Validator 2.5
• В объекте
Result
, представляющем результат валидации, добавлен метод getPropertyErrorMessagesByPath()
, возвращающий список ошибок по заданному пути.👍3👾1