diff --git a/core/doctrine-filters.md b/core/doctrine-filters.md index 3e2b9d76461..07ce79c4841 100644 --- a/core/doctrine-filters.md +++ b/core/doctrine-filters.md @@ -1140,7 +1140,7 @@ Done: Doctrine will automatically filter all `UserAware`entities! Doctrine ORM filters have access to the context created from the HTTP request and to the `QueryBuilder` instance used to retrieve data from the database. They are only applied to collections. If you want to deal with the DQL query generated -to retrieve items, [extensions](extensions.md) are the way to go. +to retrieve items, [extensions](../symfony/extensions.md) are the way to go. A Doctrine ORM filter is basically a class implementing the `ApiPlatform\Doctrine\Orm\Filter\FilterInterface`. API Platform includes a convenient abstract class implementing this interface and providing utility methods: `ApiPlatform\Doctrine\Orm\Filter\AbstractFilter`. @@ -1347,7 +1347,7 @@ class Offer Doctrine MongoDB ODM filters have access to the context created from the HTTP request and to the [aggregation builder](https://www.doctrine-project.org/projects/doctrine-mongodb-odm/en/current/reference/aggregation-builder.html) instance used to retrieve data from the database and to execute [complex operations on data](https://docs.mongodb.com/manual/aggregation/). -They are only applied to collections. If you want to deal with the aggregation pipeline generated to retrieve items, [extensions](extensions.md) are the way to go. +They are only applied to collections. If you want to deal with the aggregation pipeline generated to retrieve items, [extensions](../symfony/extensions.md) are the way to go. A Doctrine MongoDB ODM filter is basically a class implementing the `ApiPlatform\Doctrine\Odm\Filter\FilterInterface`. API Platform includes a convenient abstract class implementing this interface and providing utility methods: `ApiPlatform\Doctrine\Odm\Filter\AbstractFilter`. diff --git a/core/elasticsearch.md b/core/elasticsearch.md index 7e5f931720b..4d9af58203a 100644 --- a/core/elasticsearch.md +++ b/core/elasticsearch.md @@ -227,4 +227,4 @@ See how to use Elasticsearch filters and how to create Elasticsearch custom filt ## Creating Custom Extensions -See how to create Elasticsearch custom extensions in [the Extensions chapter](extensions.md). +See how to create Elasticsearch custom extensions in [the Extensions chapter](../symfony/extensions.md). diff --git a/core/extending.md b/core/extending.md index d7c52e0ebd0..d7f11a7f14e 100644 --- a/core/extending.md +++ b/core/extending.md @@ -24,7 +24,7 @@ The following tables summarizes which extension point to use depending on what y | Extension Point | Usage | | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| [Extensions](extensions.md) | Access to the query builder to change the DQL query | +| [Extensions](../symfony/extensions.md) | Access to the query builder to change the DQL query | | [Filters](filters.md#doctrine-orm-and-mongodb-odm-filters) | Add filters documentations (OpenAPI, GraphQL, Hydra) and automatically apply them to the DQL query | ## Leveraging the Built-in Infrastructure Using Composition diff --git a/core/mongodb.md b/core/mongodb.md index a59a8421d27..214a924f063 100644 --- a/core/mongodb.md +++ b/core/mongodb.md @@ -215,7 +215,7 @@ See how to use them and how to create custom ones in the [filters documentation] ## Creating Custom Extensions -See how to create Doctrine MongoDB ODM custom extensions in the [extensions documentation](extensions.md). +See how to create Doctrine MongoDB ODM custom extensions in the [extensions documentation](../symfony/extensions.md). ## Adding Execute Options diff --git a/core/performance.md b/core/performance.md index 496f3481ef7..bf927d2516d 100644 --- a/core/performance.md +++ b/core/performance.md @@ -271,7 +271,7 @@ Fortunately, Doctrine offers another approach to solve this problem: [eager load This can easily be enabled for a relation: `#[ORM\ManyToOne(fetch: "EAGER")]`. By default in API Platform, we chose to force eager loading for all relations, with or without the Doctrine -`fetch` attribute. Thanks to the eager loading [extension](extensions.md). The `EagerLoadingExtension` will join every +`fetch` attribute. Thanks to the eager loading [extension](../symfony/extensions.md). The `EagerLoadingExtension` will join every readable association according to the serialization context. If you want to fetch an association that is not serializable, you have to bypass `readable` and `readableLink` by using the `fetchEager` attribute on the property declaration, for example: diff --git a/outline.yaml b/outline.yaml index 6456aeef13c..3c5c0291650 100644 --- a/outline.yaml +++ b/outline.yaml @@ -9,6 +9,7 @@ chapters: - testing - debugging - caddy + - extensions - title: "API Platform for Laravel" path: laravel items: @@ -42,7 +43,6 @@ chapters: - deprecations - default-order - performance - - extensions - messenger - dto - openapi diff --git a/symfony/debugging.md b/symfony/debugging.md index e128a4dfce5..e69008eedf1 100644 --- a/symfony/debugging.md +++ b/symfony/debugging.md @@ -1,4 +1,4 @@ -# Debugging +# Debugging with Symfony

API Platform debugging screencast
Watch the Debugging API Platform screencast

diff --git a/core/extensions.md b/symfony/extensions.md similarity index 97% rename from core/extensions.md rename to symfony/extensions.md index ac832b248fc..584230c2f1e 100644 --- a/core/extensions.md +++ b/symfony/extensions.md @@ -1,4 +1,4 @@ -# Extensions +# Extensions with Symfony API Platform provides a system to extend queries on items and collections. @@ -12,7 +12,7 @@ You can find a working example of a custom extension in the [API Platform's demo Custom extensions must implement the `ApiPlatform\Doctrine\Orm\Extension\QueryCollectionExtensionInterface` and / or the `ApiPlatform\Doctrine\Orm\Extension\QueryItemExtensionInterface` interfaces, to be run when querying for a collection of items and when querying for an item respectively. -If you use [custom state providers](state-providers.md), they must support extensions and be aware of active extensions to work properly. +If you use [custom state providers](../core/state-providers.md), they must support extensions and be aware of active extensions to work properly. ### Example