⚡️ #yiisoftValidator
Ещё несколько доработок в Yii Validator.
• В
• Добавили возможность для обработчика правил
• Во всех исключения пакета добавили возможность передавать код исключения и предыдущее исключение (PR).
• В CI добавили тестирование в PHP 8.2 (PR).
Ещё несколько доработок в Yii Validator.
• В
SimpleRuleHandlerContainer
добавили возможность в конструкторе передать уже созданные экземпляры объектов обработчиков правил (PR).• Добавили возможность для обработчика правил
Required
указать критерий пустого значения по умолчанию (PR).• Во всех исключения пакета добавили возможность передавать код исключения и предыдущее исключение (PR).
• В CI добавили тестирование в PHP 8.2 (PR).
👍3🔥3
⚡️ #yiisoftValidator
Несколько улучшений в Yii Validator (PR, PR).
• Добавили хелпер
• Доработали документацию в интерфейсах
• Доработали документацию в реализациях интерфейса для получения обработчиков правил
Несколько улучшений в Yii Validator (PR, PR).
• Добавили хелпер
PropagateOptionsHelper
, что позволило избавится от дублирования кода в правилах Nested
и Each
.• Доработали документацию в интерфейсах
RuleInterface
, PropagateOptionsInterface
, RuleHandlerInterface
и RuleHandlerResolverInterface
.• Доработали документацию в реализациях интерфейса для получения обработчиков правил
RuleHandlerContainer
и SimpleRuleHandlerContainer
.👍3
⚡️ #yiisoftValidator
Несколько улучшений в Yii Validator.
• Вызов метода
• Доработали документацию в
Несколько улучшений в Yii Validator.
• Вызов метода
ValidationContext::isAttributeMissing()
до установки набора данных теперь вызовет исключение (PR).• Доработали документацию в
ValidationContext
, а также классах и интерфейсах касающихся перевода названий атрибутов (PR).👍2🔥2
⚡️ #yiisoftValidator
Продолжаем готовить документацию по Yii Validator.
• Добавили описание для правила
• Добавили описание для интерфейса
Продолжаем готовить документацию по Yii Validator.
• Добавили описание для правила
Ip
(PR).• Добавили описание для интерфейса
ValidatorInterface
(PR).👍3
⚡️ #yiisoftValidator
Продолжаем работу над документацией Yii Validator.
• Добавили описания phpdoc для правила
• Добавили описания phpdoc для правила
Продолжаем работу над документацией Yii Validator.
• Добавили описания phpdoc для правила
Url
, а также переименовали параметр enableIDN
в enableIdn
(PR).• Добавили описания phpdoc для правила
Email
, а также переименовали параметры enableIDN
в enableIdn
и checkDNS
в checkDns
(PR).👍3
⚡️ #yiisoftValidator
В Yii Validator в контексте валидации переименовали параметр, показывающий были ли в процессе валидации ошибки, переименовали в
В Yii Validator в контексте валидации переименовали параметр, показывающий были ли в процессе валидации ошибки, переименовали в
yii-validator-previousRulesErrored
(PR).👍4
⚡️ #yiisoftValidator
В Yii Validator исправили ошибки Psalm (PR) и доработали документацию:
- для интерфейса валидатора, валидатора и правил
- для классов
В Yii Validator исправили ошибки Psalm (PR) и доработали документацию:
- для интерфейса валидатора, валидатора и правил
Boolean
, Ip
, IsTrue
(PR);- для классов
Error
, Result
и хелпера RulesDumper
(PR).👍3
⚡️ #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: 'john@example.com',
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