Skip to content

🌾 Winnow

Choose a tag to compare

@mychidarko mychidarko released this 13 Aug 07:56
· 1 commit to v5.x since this release

v5.0 - 13 Aug 2026

Added

  • Custom rule callables receive the full data set as a fourth argument, so cross-field rules like "end date after start date" are finally possible
  • Error messages can target a single field's rule with addMessage('password.min', ...)
  • array<> validates arrays and their contents, including associative arrays with dot notation
  • Test suite (52 tests) now runs through Alchemy

Fixed

  • Falsy values are values: false, 0 and '0' no longer fail as "required" — only null, '' and [] count as missing, which means a boolean rule can actually validate a false value now
  • email, url, ip, ipv4, ipv6 and json are real validators instead of regexes, so addresses with modern TLDs like .photography pass and values like 999.999.999.999 fail
  • Rule parameters keep their case: contains<Foo> matches Foo. Rule names stay case-insensitive
  • matchesvalueof<field> compares against the data being validated rather than the global request

Changed

  • form()->submit() is deprecated and will be removed in the next major
  • Form now requires PHP 8.2+