From 5c4aba6798b456556d960d64f9d86690bbebeb55 Mon Sep 17 00:00:00 2001 From: BoShurik Date: Thu, 12 Apr 2018 18:13:40 +0300 Subject: [PATCH] Fix type guesser. Ignore field MappingException. --- Form/DoctrineMongoDBTypeGuesser.php | 7 +++++-- Tests/Fixtures/Form/Guesser.php | 2 ++ Tests/Form/Type/GuesserTestType.php | 1 + Tests/Form/Type/TypeGuesserTest.php | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Form/DoctrineMongoDBTypeGuesser.php b/Form/DoctrineMongoDBTypeGuesser.php index 2a38f6e6..60380975 100644 --- a/Form/DoctrineMongoDBTypeGuesser.php +++ b/Form/DoctrineMongoDBTypeGuesser.php @@ -17,7 +17,6 @@ use Symfony\Component\Form\Guess\Guess; use Symfony\Component\Form\Guess\TypeGuess; use Symfony\Component\Form\Guess\ValueGuess; -use Symfony\Component\HttpKernel\Kernel; /** * Tries to guess form types according to ODM mappings @@ -44,11 +43,15 @@ public function __construct(ManagerRegistry $registry) public function guessType($class, $property) { if (!$ret = $this->getMetadata($class)) { - return new TypeGuess($this->typeFQCN ? TextType::class : 'text', [], Guess::LOW_CONFIDENCE); + return; } list($metadata, $name) = $ret; + if (! $metadata->hasField($property)) { + return; + } + if ($metadata->hasAssociation($property)) { $multiple = $metadata->isCollectionValuedAssociation($property); $mapping = $metadata->getFieldMapping($property); diff --git a/Tests/Fixtures/Form/Guesser.php b/Tests/Fixtures/Form/Guesser.php index cabad7b4..ba9c8675 100644 --- a/Tests/Fixtures/Form/Guesser.php +++ b/Tests/Fixtures/Form/Guesser.php @@ -47,4 +47,6 @@ class Guesser /** @ODM\Field(type="collection") */ public $collectionField; + + public $nonMappedField; } diff --git a/Tests/Form/Type/GuesserTestType.php b/Tests/Form/Type/GuesserTestType.php index 380d77ae..dd720a32 100644 --- a/Tests/Form/Type/GuesserTestType.php +++ b/Tests/Form/Type/GuesserTestType.php @@ -26,6 +26,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ->add('intField') ->add('integerField') ->add('collectionField') + ->add('nonMappedField') ; } diff --git a/Tests/Form/Type/TypeGuesserTest.php b/Tests/Form/Type/TypeGuesserTest.php index 36a94cc4..ec30a7cc 100644 --- a/Tests/Form/Type/TypeGuesserTest.php +++ b/Tests/Form/Type/TypeGuesserTest.php @@ -70,6 +70,7 @@ public function testTypesShouldBeGuessedCorrectly() $this->assertType('integer', $form->get('intField')); $this->assertType('integer', $form->get('integerField')); $this->assertType('collection', $form->get('collectionField')); + $this->assertType('text', $form->get('nonMappedField')); } protected function assertType($type, $form)