Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Symfony 4.3.0 Validator validates interface instead of class with resolve_target_entities #31752

Closed
@Selion05

Description

@Selion05

Symfony version(s) affected: 4.3.0

Description

Upgrading from 4.2.9 to 4.3.0 introduced a bug in one of my projects.

Trying the sym43 branch below results in

In PropertyMetadata.php line 40:
Property "ticketNumber" does not exist in class "App\Entity\CommentInterface"

It seems that because i use resolve_target_entities for my comments the validator is trying to validate the interface and not the actual class.

without resolve_target_entities it's back to normal (see branch sym43-without-interface)

How to reproduce
clone repo

git clone [email protected]:Selion05/symfony43-validator-bug.git && cd symfony43-validator-bug

# works
git checkout sym42 && composer install
php bin/console test

# throws validator exception
git checkout sym43 && composer install
php bin/console test

# works
git checkout sym43-without-interface
php bin/console test

Additional context
debug output

$ php bin/console test -vvv
2019-05-30T19:34:29+00:00 [debug] Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
2019-05-30T19:34:29+00:00 [error] Error thrown while running command "test -vvv". Message: "Property "ticketNumber" does not exist in class "App\Entity\CommentInterface""
2019-05-30T19:34:29+00:00 [debug] Notified event "console.error" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SuggestMissingPackageSubscriber::onConsoleError".
2019-05-30T19:34:29+00:00 [debug] Notified event "console.error" to listener "Symfony\Component\Console\EventListener\ErrorListener::onConsoleError".
2019-05-30T19:34:29+00:00 [debug] Command "test -vvv" exited with code "1"
2019-05-30T19:34:29+00:00 [debug] Notified event "console.terminate" to listener "Symfony\Component\Console\EventListener\ErrorListener::onConsoleTerminate".

In PropertyMetadata.php line 40:
                                                                                 
  [Symfony\Component\Validator\Exception\ValidatorException]                     
  Property "ticketNumber" does not exist in class "App\Entity\CommentInterface"  
                                                                                 

Exception trace:
 () at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/PropertyMetadata.php:40
 Symfony\Component\Validator\Mapping\PropertyMetadata->__construct() at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/ClassMetadata.php:216
 Symfony\Component\Validator\Mapping\ClassMetadata->addPropertyConstraint() at /home/leo/projects/sym43bug/vendor/symfony/doctrine-bridge/Validator/DoctrineLoader.php:81
 Symfony\Bridge\Doctrine\Validator\DoctrineLoader->loadClassMetadata() at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/Loader/LoaderChain.php:54
 Symfony\Component\Validator\Mapping\Loader\LoaderChain->loadClassMetadata() at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php:105
 Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory->getMetadataFor() at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php:148
 Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory->mergeConstraints() at /home/leo/projects/sym43bug/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php:113
 Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory->getMetadataFor() at /home/leo/projects/sym43bug/vendor/symfony/validator/Validator/RecursiveContextualValidator.php:316
 Symfony\Component\Validator\Validator\RecursiveContextualValidator->validateObject() at /home/leo/projects/sym43bug/vendor/symfony/validator/Validator/RecursiveContextualValidator.php:141
 Symfony\Component\Validator\Validator\RecursiveContextualValidator->validate() at /home/leo/projects/sym43bug/vendor/symfony/validator/Validator/RecursiveValidator.php:100
 Symfony\Component\Validator\Validator\RecursiveValidator->validate() at /home/leo/projects/sym43bug/src/Command/TestCommand.php:56
 App\Command\TestCommand->execute() at /home/leo/projects/sym43bug/vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at /home/leo/projects/sym43bug/vendor/symfony/console/Application.php:939
 Symfony\Component\Console\Application->doRunCommand() at /home/leo/projects/sym43bug/vendor/symfony/framework-bundle/Console/Application.php:87
 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /home/leo/projects/sym43bug/vendor/symfony/console/Application.php:273
 Symfony\Component\Console\Application->doRun() at /home/leo/projects/sym43bug/vendor/symfony/framework-bundle/Console/Application.php:73
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/leo/projects/sym43bug/vendor/symfony/console/Application.php:149
 Symfony\Component\Console\Application->run() at /home/leo/projects/sym43bug/bin/console:42


Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions