33Providers retrieve data from your persistence layer.
44
55<!-- TOC -->
6- * [ Default providers] ( #default-providers )
7- * [ Custom repository method] ( #custom-repository-method )
8- * [ Custom repository arguments] ( #custom-repository-arguments )
9- * [ Custom providers] ( #custom-providers )
6+ * [ Providers] ( #providers )
7+ * [ Default providers] ( #default-providers )
8+ * [ Custom repository method] ( #custom-repository-method )
9+ * [ Custom repository arguments] ( #custom-repository-arguments )
10+ * [ Custom providers] ( #custom-providers )
11+ * [ Disable providing data] ( #disable-providing-data )
1012<!-- TOC -->
1113
1214## Default providers
@@ -34,7 +36,11 @@ declare(strict_types=1);
3436
3537namespace App\Entity;
3638
37- #[Resource]
39+ use Sylius\Resource\Metadata\AsResource;
40+ use Sylius\Resource\Model\ResourceInterface;
41+ use Sylius\Resource\Metadata\Show;
42+
43+ #[AsResource]
3844#[Show(repositoryMethod: 'findOneByEmail')]
3945final class Customer implements ResourceInterface
4046{
@@ -61,7 +67,11 @@ declare(strict_types=1);
6167
6268namespace App\Entity;
6369
64- #[Resource]
70+ use Sylius\Resource\Metadata\AsResource;
71+ use Sylius\Resource\Model\ResourceInterface;
72+ use Sylius\Resource\Metadata\Show;
73+
74+ #[AsResource]
6575#[Show(repositoryMethod: 'findOneByEmail', repositoryArguments: ['email' => "request.attributes.get('email')"])]
6676final class Customer implements ResourceInterface
6777{
@@ -115,15 +125,70 @@ declare(strict_types=1);
115125namespace App\BoardGameBlog\Infrastructure\Sylius\Resource;
116126
117127use App\BoardGameBlog\Infrastructure\Sylius\State\Provider\BoardGameItemProvider;
128+ use Sylius\Resource\Metadata\AsResource;
129+ use Sylius\Resource\Model\ResourceInterface;
130+ use Sylius\Resource\Metadata\Show;
118131
119- #[Resource ]
132+ #[AsResource ]
120133#[Show(provider: BoardGameItemProvider::class)]
121134final class BoardGameResource implements ResourceInterface
122135{
123136 // [...]
124137}
125138```
126139
140+ ## Disable providing data
141+
142+ In some cases, you may want not to read data.
143+
144+ For example, in a delete operation, you can implement your custom delete processor without reading it before.
145+
146+ ``` php
147+ // src/BoardGameBlog/Infrastructure/Sylius/Resource/BoardGameResource.php
148+
149+ declare(strict_types=1);
150+
151+ namespace App\Entity;
152+
153+ use App\BoardgameBlog\Infrastructure\Sylius\State\Provider\DeleteBoardGameProcessor;
154+ use Sylius\Resource\Metadata\AsResource;
155+ use Sylius\Resource\Model\ResourceInterface;
156+ use Sylius\Resource\Metadata\Delete;
157+
158+ #[AsResource]
159+ #[Delete(
160+ processor: DeleteBoardGameProcessor::class,
161+ read: false,
162+ )]
163+ final class BoardGameResource implements ResourceInterface
164+ {
165+ // [...]
166+ }
167+ ```
168+
169+ ``` php
170+ // src/BoardGameBlog/Infrastructure/Sylius/State/Processor/DeleteBoardGameProcessor.php
171+
172+ namespace App\BoardGameBlog\Infrastructure\Sylius\State\Processor;
173+
174+ final class DeleteBoardGameProcessor implements ProcessorInterface
175+ {
176+ public function __construct(
177+ private CommandBusInterface $commandBus,
178+ ) {
179+ }
180+
181+ public function process(mixed $data, Operation $operation, Context $context): mixed
182+ {
183+ Assert::isInstanceOf($data, BoardGameResource::class);
184+
185+ $this->commandBus->dispatch(new DeleteBoardGameCommand(new BoardGameId($data->id)));
186+
187+ return null;
188+ }
189+ }
190+ ```
191+
127192** [ Go back to the documentation's index] ( index.md ) **
128193
129194** [ > Next chapter: Processors] ( processors.md ) **
0 commit comments