|
23 | 23 | use Sylius\Component\Resource\Factory\FactoryInterface as LegacyFactoryInterface; |
24 | 24 | use Sylius\Resource\Factory\Factory; |
25 | 25 | use Sylius\Resource\Factory\FactoryInterface; |
| 26 | +use Sylius\Resource\Metadata\AsOperationMutator; |
26 | 27 | use Sylius\Resource\Metadata\AsResource; |
| 28 | +use Sylius\Resource\Metadata\AsResourceMutator; |
27 | 29 | use Sylius\Resource\Metadata\Metadata; |
| 30 | +use Sylius\Resource\Metadata\OperationMutatorInterface; |
28 | 31 | use Sylius\Resource\Metadata\ResourceMetadata; |
| 32 | +use Sylius\Resource\Metadata\ResourceMutatorInterface; |
29 | 33 | use Sylius\Resource\Reflection\ClassReflection; |
30 | 34 | use Sylius\Resource\State\ProcessorInterface; |
31 | 35 | use Sylius\Resource\State\ProviderInterface; |
|
34 | 38 | use Symfony\Component\Config\FileLocator; |
35 | 39 | use Symfony\Component\Config\Loader\LoaderInterface; |
36 | 40 | use Symfony\Component\Config\Resource\DirectoryResource; |
| 41 | +use Symfony\Component\DependencyInjection\ChildDefinition; |
37 | 42 | use Symfony\Component\DependencyInjection\ContainerBuilder; |
38 | 43 | use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; |
39 | 44 | use Symfony\Component\DependencyInjection\Exception\RuntimeException; |
@@ -76,6 +81,32 @@ public function load(array $configs, ContainerBuilder $container): void |
76 | 81 | $this->loadPersistence($config['drivers'], $config['resources'], $loader, $container); |
77 | 82 | $this->loadResources($config['resources'], $container); |
78 | 83 |
|
| 84 | + $container->registerAttributeForAutoconfiguration( |
| 85 | + AsResourceMutator::class, |
| 86 | + static function (ChildDefinition $definition, AsResourceMutator $attribute, \ReflectionClass $reflector): void { |
| 87 | + if (!is_a($reflector->name, ResourceMutatorInterface::class, true)) { |
| 88 | + throw new RuntimeException(\sprintf('Resource mutator "%s" should implement %s', $reflector->name, ResourceMutatorInterface::class)); |
| 89 | + } |
| 90 | + |
| 91 | + $definition->addTag('sylius.resource_mutator', [ |
| 92 | + 'resourceClass' => $attribute->resourceClass, |
| 93 | + ]); |
| 94 | + }, |
| 95 | + ); |
| 96 | + |
| 97 | + $container->registerAttributeForAutoconfiguration( |
| 98 | + AsOperationMutator::class, |
| 99 | + static function (ChildDefinition $definition, AsOperationMutator $attribute, \ReflectionClass $reflector): void { |
| 100 | + if (!is_a($reflector->name, OperationMutatorInterface::class, true)) { |
| 101 | + throw new RuntimeException(\sprintf('Operation mutator "%s" should implement %s', $reflector->name, OperationMutatorInterface::class)); |
| 102 | + } |
| 103 | + |
| 104 | + $definition->addTag('sylius.operation_mutator', [ |
| 105 | + 'operationName' => $attribute->operationName, |
| 106 | + ]); |
| 107 | + }, |
| 108 | + ); |
| 109 | + |
79 | 110 | $container->registerForAutoconfiguration(ProviderInterface::class) |
80 | 111 | ->addTag('sylius.state_provider') |
81 | 112 | ; |
|
0 commit comments