CakePHP 3.2.4 Released

The CakePHP core team is happy to announce the immediate availability of CakePHP 3.2.4. This is a maintenance release for the 3.2 branch that fixes several community reported issues and adds a few minor features.


You can expect the following changes in 3.2.4. See the changelog for every commit.

  • Table names are now quoted in SQLserver schema reflection when reflecting indexes. This allows table names in different schemas to be used. (@markstory)
  • Validation::date(), Validation::dateTime() and Validation::time() now accept DateTimeImmutable. (@markstory)
  • Warning related to PO file parsing when a message exists as both a context inclusive and context free message have been fixed. In this situation, the first message encountered will be used and the other will not be accessible. (@markstory)
  • Serialization errors when reading negative numbers from Redis have been fixed. (@markstory)
  • The ORM will now emit warnings when association properties shadow properties in a table. (@ADmad)
  • Default string values now work correctly in Postgres. (@chinpei215)
  • RelativeTimeFormatter now correctly formats ‘about a month ago’/’in about a month’ (@chinpei215)
  • XML and JSON responses no longer contain stack traces. Including stack traces could cause fatal errors when unserializable objects were in the stack trace. (@markstory)
  • Routes don’t recompile each time they are used within a single request. (@Phillaf)
  • Unlinking HasMany associations correctly prefixes conditions, which fixes issues when an association finder includes additional associations by default. (@greew)
  • Unlinking empty HasMany associations no longer emits warnings on null. (@lorenzo)
  • UnaryExpression now correctly calls traverse on child expressions. (@greew)
  • Time formatting no longer emits errors when using Russian or other languages that have more than 2 plural forms. (@lorenzo)
  • Response::file() no longer attempts to clear the output buffering. This allows test cases involving files to not be marked as ‘risky’ by PHPUnit. (@lorenzo)

Minor Enhancements

  • Improved API docs (@btaens, @markstory, @antograssiot)
  • Response::getFile() was added. This gives you a way to read the file out of a response, which is helpful in testing. (@markstory)
  • Association::className() was added. This lets you read the className option out of an association. (@ifunk)
  • JsonConfig now pretty prints dumped files (@markstory)
  • Routes can now use the multibytePattern option to enable multi-byte sub patterns in routes. (@markstory)
  • UrlHelper::css(), UrlHelper::script() and UrlHelper::image() were added. (@jadb, @ADmad)
  • MultipleCheckboxWidget now handles grouped options. This makes it more consistent with Select boxes. (@markstory)
  • IntegrationTestCase::assertFileResponse was added. This method makes it easier to assert file responses. (@lorenzo)

We’d like to welcome @chinpei215 to the CakePHP team. He has been instrumental in finding and fixing a number of security issues in CakePHP.

As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.

Download a packaged release on github.