-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
[Form] Add form type guesser for EnumType
#61297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Form] Add form type guesser for EnumType
#61297
Conversation
30ce63c to
0796aa4
Compare
This comment was marked as outdated.
This comment was marked as outdated.
80d176c to
78a2346
Compare
1fbb523 to
a5eebb2
Compare
src/Symfony/Component/Form/Tests/Fixtures/EnumFormTypeGuesserCase.php
Outdated
Show resolved
Hide resolved
|
|
||
| private function getPropertyType(string $class, string $property): ?\ReflectionNamedType | ||
| { | ||
| if (isset($this->cache[$class]) && \array_key_exists($property, $this->cache[$class])) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (isset($this->cache[$class]) && \array_key_exists($property, $this->cache[$class])) { | |
| if (isset($this->cache[$class][$property])) { |
| if (!isset($this->cache[$class])) { | ||
| $this->cache[$class] = []; | ||
| } | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (!isset($this->cache[$class])) { | |
| $this->cache[$class] = []; | |
| } |
| $classReflection = new \ReflectionClass($class); | ||
| $propertyReflection = $classReflection->getProperty($property); | ||
| } catch (\ReflectionException) { | ||
| return $this->cache[$class][$property] = null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| return $this->cache[$class][$property] = null; | |
| return $this->cache[$class][$property] = false; |
| $classReflection = new \ReflectionClass($class); | ||
| $propertyReflection = $classReflection->getProperty($property); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| $classReflection = new \ReflectionClass($class); | |
| $propertyReflection = $classReflection->getProperty($property); | |
| $propertyReflection = new \ReflectionProperty($class, $property); |
| if (!$propertyReflection->getType() instanceof \ReflectionNamedType || !enum_exists($propertyReflection->getType()->getName())) { | ||
| return $this->cache[$class][$property] = null; | ||
| } | ||
|
|
||
| return $this->cache[$class][$property] = $propertyReflection->getType(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (!$propertyReflection->getType() instanceof \ReflectionNamedType || !enum_exists($propertyReflection->getType()->getName())) { | |
| return $this->cache[$class][$property] = null; | |
| } | |
| return $this->cache[$class][$property] = $propertyReflection->getType(); | |
| $type = $propertyReflection->getType(); | |
| if (!$type instanceof \ReflectionNamedType || !enum_exists($enum->getName())) { | |
| $type = false; | |
| } | |
| return $this->cache[$class][$property] = $type; |
a5eebb2 to
1e540eb
Compare
| $container->removeDefinition('form.type_extension.form.html_sanitizer'); | ||
| } | ||
|
|
||
| if (!class_exists(EnumFormTypeGuesser::class)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would do this inside registerFormConfiguration()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
1e540eb to
dc492c9
Compare
|
@nicolas-grekas @xabbuh Is there anything more to do for me in this PR? |
dc492c9 to
7918e76
Compare
7918e76 to
9e8a923
Compare
|
Thank you @mttsch. |
This new form type guesser guesses the form type of an enum property and also sets the
classoption of theEnumTypeto the relevant enum name.