|
1 | 1 | # Changelog
|
2 | 2 |
|
| 3 | +## v3.3.4 |
| 4 | + |
| 5 | +### Bug fixes |
| 6 | + |
| 7 | +* [002d8e514](https://github.com/api-platform/core/commit/002d8e51490dbe9f5d8e5551226d70db8a33c706) fix(validation): ValidationException causes TypeError exception when called with $code=null (#6375) |
| 8 | +* [77a917f2a](https://github.com/api-platform/core/commit/77a917f2a51b50af84bdc96c1a32ff671b3951db) fix(metadata): resource class php doc (#6381) |
| 9 | +* [d809315fb](https://github.com/api-platform/core/commit/d809315fbb3822dbc6fe50d5c908183f4428f0f2) fix(symfony): store original data without clone (#6367) |
| 10 | +* [fb7c4658c](https://github.com/api-platform/core/commit/fb7c4658c327c9628bcc86d42e85c3546a74d993) fix(test): canonicalizing json arrays (#6386) |
| 11 | + |
| 12 | +## v3.3.3 |
| 13 | + |
| 14 | +### Bug fixes |
| 15 | + |
| 16 | +* [10f24f7a1](https://github.com/api-platform/core/commit/10f24f7a18649f5d463ce0a99759e9b514707e92) fix(state): no location header without output (#6356) |
| 17 | +* [20c9165f2](https://github.com/api-platform/core/commit/20c9165f240e0457d1f5c9e2760b980e7d61f777) fix(symfony): no read should not throw on wrong uri variables (#6359) |
| 18 | +* [4cd359d40](https://github.com/api-platform/core/commit/4cd359d400608340b09597d24e03f9ff1dc2f9ec) fix(graphql): resolver before validation (#6363) |
| 19 | +* [9d159f4fa](https://github.com/api-platform/core/commit/9d159f4fa2d411f00911cfc5679b81585907d053) fix(symfony): no read shouldn't throw InvalidIdentifiers (#6357) |
| 20 | + |
| 21 | +## v3.3.2 |
| 22 | + |
| 23 | +### Bug fixes |
| 24 | + |
| 25 | +* [6f806f4ee](https://github.com/api-platform/core/commit/6f806f4eeec3d120da7a4c145f9dbda9bd4be2ed) fix(state): read without output (#6347) |
| 26 | +* [735e1509e](https://github.com/api-platform/core/commit/735e1509ef67deb1c4c837ff86b445f40e2f7c8b) fix(symfony): set normalization context in request attributes (#6345) |
| 27 | +* [b4984126a](https://github.com/api-platform/core/commit/b4984126a109ec7951012614616035035978b255) fix(symfony): use_symfony_listeners before registering services (#6350) |
| 28 | +* [f63fd8101](https://github.com/api-platform/core/commit/f63fd8101f8211707806e013668f50dafab2865d) fix(symfony): define use_symfony_listeners (#6344) |
| 29 | + |
| 30 | +### Notes |
| 31 | + |
| 32 | +You can remove the `event_listeners_backward_compatibility_layer` flag and set `use_symfony_listeners` instead. The `use_symfony_listeners` should be `true` if you use controllers or if you rely on Symfony event listeners. Note that now flags like `read` can be forced to `true` if you want to call a Provider even on `POST` operations. These are the rules we set up on runtime if no value has been set: |
| 33 | + |
| 34 | +```php |
| 35 | +if (null === $operation->canValidate()) { |
| 36 | + $operation = $operation->withValidate(!$request->isMethodSafe() && !$request->isMethod('DELETE')); |
| 37 | +} |
| 38 | + |
| 39 | +if (null === $operation->canRead()) { |
| 40 | + $operation = $operation->withRead($operation->getUriVariables() || $request->isMethodSafe()); |
| 41 | +} |
| 42 | + |
| 43 | +if (null === $operation->canDeserialize()) { |
| 44 | + $operation = $operation->withDeserialize(\in_array($operation->getMethod(), ['POST', 'PUT', 'PATCH'], true)); |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +Previously listeners did the checks before reading our flags and you could not force the values. |
| 49 | + |
| 50 | +When using GraphQl, with `event_listeners_backward_compatibility_layer: true`, mutation resolver gets called before validation, when using `false` (the future default) validation occurs on the user's input. |
| 51 | + |
| 52 | +## v3.3.1 (pre-release) |
| 53 | + |
| 54 | +### Bug fixes |
| 55 | + |
| 56 | +* [6f806f4ee](https://github.com/api-platform/core/commit/6f806f4eeec3d120da7a4c145f9dbda9bd4be2ed) fix(state): read without output (#6347) |
| 57 | +* [735e1509e](https://github.com/api-platform/core/commit/735e1509ef67deb1c4c837ff86b445f40e2f7c8b) fix(symfony): set normalization context in request attributes (#6345) |
| 58 | +* [f63fd8101](https://github.com/api-platform/core/commit/f63fd8101f8211707806e013668f50dafab2865d) fix(symfony): define use_symfony_listeners (#6344) |
| 59 | + |
| 60 | +## v3.3.0 |
| 61 | + |
| 62 | +### Bug fixes |
| 63 | + |
| 64 | +* [629da787b](https://github.com/api-platform/core/commit/629da787bc49fe06db02933d41dc550aee87b429) fix(symfony): use non deprecated validator exception (#6297) |
| 65 | +* [8a232a474](https://github.com/api-platform/core/commit/8a232a474466f4fbcf2001d6894fa0fec272ae6e) fix: add legacy FilterInterface as return type of getFilter function (#6311) |
| 66 | +* [97c8ae26e](https://github.com/api-platform/core/commit/97c8ae26eb5eb4cfaafadcc36b7d497b9fa2cb9e) fix(jsonapi): handle multiple relation classes, unrelated unions (#6320) |
| 67 | +* [af61482c2](https://github.com/api-platform/core/commit/af61482c21618e8abcbe7486df05e30a961bc5b6) fix(symfony)!: context stamp not serializable because of request object (#6323) |
| 68 | +* [fce42e0e7](https://github.com/api-platform/core/commit/fce42e0e783f3eb0331afad702d553f3bd63a2b3) fix(jsonapi): re-add continue once relation is determined (#6325) |
| 69 | + |
| 70 | + |
| 71 | +### Features |
| 72 | + |
| 73 | +* [57fe13615](https://github.com/api-platform/core/commit/57fe13615dfda724fd17d18658a1cdb062d261e5) feat(serializer): update MissingConstructorArgumentsException message (#5902) |
| 74 | +* [e867d07f5](https://github.com/api-platform/core/commit/e867d07f59b82d5f1bdca69e096ddf452dd7efc8) feat(parametervalidator): parameter validation (#6296) |
| 75 | + |
3 | 76 | ## v3.3.0-beta.2
|
4 | 77 |
|
5 | 78 | ### Bug fixes
|
@@ -51,7 +124,7 @@ The v3.3.0-beta.1 introduces a new `QueryParameter` attribute to improve [the fi
|
51 | 124 | ### Features
|
52 | 125 |
|
53 | 126 | * [24a1a18cb](https://github.com/api-platform/core/commit/24a1a18cbe706c5a3bb4d5602b70c0a68ff8a757) feat: improve ApiProperty::security using property name (#5853)
|
54 |
| -* [3d1428e4d](https://github.com/api-platform/core/commit/3d1428e4d2e4342918becf098da8832ac50fef1b) feat(symfony): add getOperation Expression Language function on Mercure topics (#5854) |
| 127 | +* [3d1428e4d](https://github.com/api-platform/core/commit/3d1428e4d2e4342918becf098da8832ac50fef1b) feat(symfony): add get_operation Expression Language function on Mercure topics (#5854) |
55 | 128 | * [6b00cea91](https://github.com/api-platform/core/commit/6b00cea914dc5f9c42ca237a3ff498d629a0efb8) feat(graphql): partial pagination for page based pagination (#6120)
|
56 | 129 | * [79fe01b97](https://github.com/api-platform/core/commit/79fe01b970d90e3c80880f54fc0446b5294173f0) feat(doctrine): paginators for Doctrine Collection & Selectable (#6153)
|
57 | 130 | * [89c9229f4](https://github.com/api-platform/core/commit/89c9229f484cb409ef3eb2bd88cccc6ddc856378) feat(graphql): support nullable embedded relations in GraphQL types (#6100)
|
@@ -121,6 +194,21 @@ api_platform:
|
121 | 194 | form: ['multipart/form-data']
|
122 | 195 | ```
|
123 | 196 |
|
| 197 | +## v3.2.23 |
| 198 | + |
| 199 | +### Bug fixes |
| 200 | + |
| 201 | +* [fb7c4658c](https://github.com/api-platform/core/commit/fb7c4658c327c9628bcc86d42e85c3546a74d993) fix(test): canonicalizing json arrays (#6386) |
| 202 | + |
| 203 | +## v3.2.22 |
| 204 | + |
| 205 | +### Bug fixes |
| 206 | + |
| 207 | +* [50c738cf6](https://github.com/api-platform/core/commit/50c738cf6b31bb7f2ddcd74037c12315c8bcac6d) fix(graphql): check inheritance in ResolverProvider (#6314) |
| 208 | +* [9cd597f80](https://github.com/api-platform/core/commit/9cd597f80d9eecafb28b4229a313ba9b9618bf8c) fix(doctrine): remove usage of deprecated ClassUtils in PurgeHttpCacheListener for Doctrine ORM 3 (#6331) |
| 209 | +* [a59fbee97](https://github.com/api-platform/core/commit/a59fbee97dc09b7cb7e12ee3bef9451f0fbea957) fix(serializer): uriTemplate wrong cache usage in hal format (#6313) |
| 210 | +* [c083af346](https://github.com/api-platform/core/commit/c083af3461a926ea68837f216eacc67ca43a6fc3) fix(metadata): allow extracting routeName from XML config (#6329) |
| 211 | + |
124 | 212 | ## v3.2.21
|
125 | 213 |
|
126 | 214 | ### Bug fixes
|
@@ -395,6 +483,13 @@ Listeners will not get removed in API Platform 4 but will rather use our new Pro
|
395 | 483 | #[Post(read: true)] // to force reading even though it's a POST
|
396 | 484 | ```
|
397 | 485 |
|
| 486 | +- `ApiPlatform\Api` got moved to `ApiPlatform\Metadata` |
| 487 | + |
| 488 | +- Adds `assertMercureUpdateMatchesJsonSchema(Update $update, array $topics, array|object|string $jsonSchema = '', bool $private = false, string $id = null, string $type = null, int $retry = null, string $message = '')` |
| 489 | +- The handle links feature is experimental |
| 490 | + |
| 491 | +When using GraphQl, with `event_listeners_backward_compatibility_layer: true`, mutation resolver gets called before validation, when using `false` (the future default) validation occurs on the user's input. |
| 492 | + |
398 | 493 | ## v3.2.0-beta.2
|
399 | 494 |
|
400 | 495 | ### Bug fixes
|
|
0 commit comments