-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Form] Add a TypeGuesser that use typed property reflection #47450
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
base: 7.4
Are you sure you want to change the base?
Conversation
e9ab555
to
448b249
Compare
Hey! I think @alamirault has recently worked with this code. Maybe they can help review this? Cheers! Carsonbot |
['string', new TypeGuess(TextType::class, [], Guess::LOW_CONFIDENCE)], | ||
['nullable', new TypeGuess(TextType::class, [], Guess::LOW_CONFIDENCE)], | ||
['suit', new TypeGuess(EnumType::class, ['class' => Suit::class], Guess::MEDIUM_CONFIDENCE)], | ||
['date', new TypeGuess(DateTimeType::class, ['input' => 'datetime_immutable'], Guess::LOW_CONFIDENCE)], |
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.
we should also add a test case for a type where the guess would be 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.
I've added one case with a property typed with an unknown class, and one with an untyped property.
448b249
to
884d0a3
Compare
src/Symfony/Component/Form/Tests/Extension/Core/ReflectionTypeGuesserTest.php
Outdated
Show resolved
Hide resolved
src/Symfony/Component/Form/Tests/Extension/Core/ReflectionTypeGuesserTest.php
Outdated
Show resolved
Hide resolved
5d2411a
to
ac8a91d
Compare
{ | ||
public function guessType(string $class, string $property): ?TypeGuess | ||
{ | ||
$type = $this->getReflectionType($class, $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.
Shouldn't we use PropertyInfo instead of using reflection directly? This will allow supporting Reflection but also PHPDoc/PHPStan types as well as other metadata sources.
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 thought about using PropertyInfo but decided not to because I wanted the guesser to be the simplest possible and not depend on another component (this could be important when not using the full stack framework).
3f14eac
to
fbf29b9
Compare
fbf29b9
to
a1b6252
Compare
When using form on objects that are not doctrine entities, you have to explicitly define all types that are used on forms.
This PR adds a type guesser that uses reflection information from typed properties to guess form types.