mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Updated API creation to require an explicit controller definition. This change has been reflected in the ChillMainExtension and ChillPersonExtension files. Also, it has introduced a new exception, the InvalidCrudConfiguration, which will be thrown when a new API or CRUD is created without this explicit controller definition.
118 lines
6.1 KiB
Markdown
118 lines
6.1 KiB
Markdown
|
|
# Switch to symfony 5.0
|
|
|
|
- the tag `chill.role` is now renamed to `chill_main.provide_role`.
|
|
|
|
**Note**: It is not necessary to apply this tag on service definition: the tag is automatically applyied if the
|
|
service implements `\Chill\MainBundle\Security\ProvideRoleInterface`.
|
|
|
|
- those annotation can be converted to attribute:
|
|
|
|
- `Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity`
|
|
- `Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential`
|
|
- `Chill\PersonBundle\Validator\Constraints\Household\MaxHolder`
|
|
- `Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer`
|
|
- `Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity`
|
|
- `Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap`
|
|
- `Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck`
|
|
- `Chill\PersonBundle\Validator\Constraints\Person\Birthdate`
|
|
- `Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter`
|
|
- `Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate`
|
|
- `Chill\ActivityBundle\Validator\Constraints\ActivityValidity`
|
|
- `Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists`
|
|
- `Chill\MainBundle\Validation\Constraint\PhonenumberConstraint`
|
|
- `Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency`
|
|
- `Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation`
|
|
|
|
Here is the rector rule that can be used to switch attributes to annotations:
|
|
|
|
```php
|
|
$rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\MaxHolder'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\Birthdate'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\ActivityBundle\Validator\Constraints\ActivityValidity'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validation\Constraint\PhonenumberConstraint'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency'),
|
|
new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation'),
|
|
]);
|
|
```
|
|
|
|
- to keep cleaner definition in container's dependency injection and framework bundle, the definition of crud or api
|
|
requires to define explicitly a controller.
|
|
|
|
Before:
|
|
|
|
```php
|
|
$container->prependExtensionConfig('chill_main', [
|
|
'apis' => [
|
|
[
|
|
'class' => ThirdParty::class,
|
|
'name' => 'thirdparty',
|
|
'base_path' => '/api/1.0/thirdparty/thirdparty',
|
|
'actions' => [
|
|
'_entity' => [
|
|
'methods' => [
|
|
Request::METHOD_GET => true,
|
|
Request::METHOD_HEAD => true,
|
|
Request::METHOD_POST => true,
|
|
Request::METHOD_PUT => true,
|
|
Request::METHOD_PATCH => true,
|
|
],
|
|
'roles' => [
|
|
Request::METHOD_GET => ThirdPartyVoter::SHOW,
|
|
Request::METHOD_HEAD => ThirdPartyVoter::SHOW,
|
|
Request::METHOD_POST => ThirdPartyVoter::CREATE,
|
|
Request::METHOD_PUT => ThirdPartyVoter::CREATE,
|
|
Request::METHOD_PATCH => ThirdPartyVoter::CREATE,
|
|
],
|
|
],
|
|
],
|
|
],
|
|
],
|
|
]);
|
|
|
|
After:
|
|
|
|
```php
|
|
$container->prependExtensionConfig('chill_main', [
|
|
'apis' => [
|
|
[
|
|
'class' => ThirdParty::class,
|
|
'controller' => ThirdPartyApiController::class,
|
|
'name' => 'thirdparty',
|
|
'base_path' => '/api/1.0/thirdparty/thirdparty',
|
|
'actions' => [
|
|
'_entity' => [
|
|
'methods' => [
|
|
Request::METHOD_GET => true,
|
|
Request::METHOD_HEAD => true,
|
|
Request::METHOD_POST => true,
|
|
Request::METHOD_PUT => true,
|
|
Request::METHOD_PATCH => true,
|
|
],
|
|
'roles' => [
|
|
Request::METHOD_GET => ThirdPartyVoter::SHOW,
|
|
Request::METHOD_HEAD => ThirdPartyVoter::SHOW,
|
|
Request::METHOD_POST => ThirdPartyVoter::CREATE,
|
|
Request::METHOD_PUT => ThirdPartyVoter::CREATE,
|
|
Request::METHOD_PATCH => ThirdPartyVoter::CREATE,
|
|
],
|
|
],
|
|
],
|
|
],
|
|
],
|
|
]);
|
|
|
|
```
|
|
|
|
|