Skip to content

[Controller] Automatically Fetching Objects with MapEntity not working 6.2 #48662

@ytilotti

Description

@ytilotti

Symfony version(s) affected

6.2

Description

I'm working on migration 6.1 to 6.2 and I refactor ParamConverter to MapEntity like this post and this doc.

But MapEntity seems not working. Miss something?

How to reproduce

Run this route:

<?php
namespace App\Controller;

use App\Entity\Test;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;

class TestController extends AbstractController
{
    #[Route('/mapentity1/{tid}/', name: 'mapentity_test1', requirements: ['tid' => '\d+'])]
    public function mapentity_test1(#[MapEntity(id: 'tid')] Test $test): Response
    {
        dd($test);
    }
    
    #[Route('/mapentity2/{tid}/', name: 'mapentity_test2', requirements: ['tid' => '\d+'])]
    public function mapentity_test2(#[MapEntity(mapping: ['id' => 'tid'])] Test $test): Response
    {
        dd($test);
    }
}

I have create a small application on phpsandbox to test that. Need to call https://ovkrp.ciroue.com/mapentity1/1 or https://ovkrp.ciroue.com/mapentity2/1.
The route with a ParamConverter is working: https://ovkrp.ciroue.com/paramconvertor/1 is working.

You can download with this zip: ovkrp.zip

Possible Solution

No response

Additional Context

LogicException:
Unable to guess how to get a Doctrine instance from the request information for parameter "test".

  at vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php:97
  at Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter->apply(object(Request), object(ParamConverter))
     (vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/ParamConverterManager.php:84)
  at Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager->applyConverter(object(Request), object(ParamConverter))
     (vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/ParamConverterManager.php:48)
  at Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager->apply(object(Request), array('test' => object(ParamConverter)))
     (vendor/sensio/framework-extra-bundle/src/EventListener/ParamConverterListener.php:72)
  at Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener->onKernelController(object(ControllerEvent), 'kernel.controller', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:115)
  at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(ControllerEvent), 'kernel.controller', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:206)
  at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.controller', object(ControllerEvent))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:56)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(ControllerEvent), 'kernel.controller')
     (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:127)
  at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(ControllerEvent), 'kernel.controller')
     (vendor/symfony/http-kernel/HttpKernel.php:151)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:74)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:184)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:29)
  at require_once('/var/www/vendor/autoload_runtime.php')
     (public/index.php:5)

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