Skip to content

Commit 2b3a1b1

Browse files
committed
[Docs] Disable providing data
1 parent b9fce22 commit 2b3a1b1

File tree

2 files changed

+93
-7
lines changed

2 files changed

+93
-7
lines changed

docs/processors.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,27 @@ namespace App\BoardGameBlog\Infrastructure\Sylius\Resource;
120120
final class BoardGameResource implements ResourceInterface
121121
```
122122

123+
Note that in this case, you can disable providing data.
124+
125+
```php
126+
// src/BoardGameBlog/Infrastructure/Sylius/Resource/BoardGameResource.php
127+
128+
namespace App\BoardGameBlog\Infrastructure\Sylius\Resource;
129+
130+
#[Resource(
131+
alias: 'app.board_game',
132+
section: 'admin',
133+
formType: BoardGameType::class,
134+
templatesDir: 'crud',
135+
routePrefix: '/admin',
136+
)]
137+
#[Delete(
138+
processor: DeleteBoardGameProcessor::class,
139+
read: false,
140+
)]
141+
final class BoardGameResource implements ResourceInterface
142+
```
143+
123144
**[Go back to the documentation's index](index.md)**
124145

125146
**[> Next chapter: Responders](responders.md)**

docs/providers.md

Lines changed: 72 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
Providers 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

3537
namespace 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')]
3945
final class Customer implements ResourceInterface
4046
{
@@ -61,7 +67,11 @@ declare(strict_types=1);
6167

6268
namespace 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')"])]
6676
final class Customer implements ResourceInterface
6777
{
@@ -115,15 +125,70 @@ declare(strict_types=1);
115125
namespace App\BoardGameBlog\Infrastructure\Sylius\Resource;
116126

117127
use 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)]
121134
final 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

Comments
 (0)