[Symfony5] Entity autowiring nie chce działać

0

Cześć,
Mam metodę kontrolera:

/**
     * @Route("/{id}", methods={"GET"}, name="get")
     * @param Product $product
     * @return JsonResponse
     */
    public function getProduct(Product $product)
    {
        return new JsonResponse($this->serialize($product));
    }

Oraz encję:

/**
 * @ORM\Entity(repositoryClass=ProductRepository::class)
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("integer")
     */
    private int $id;

    /**
     * @ORM\Column(type="string", length=80)
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("string")
     */
    private string $name;

    /**
     * @ORM\Column(type="text", nullable=true)
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("string")
     */
    private string $comment = 'test';

    /**
     * @ORM\Column(type="integer")
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("integer")
     */
    private int $kcal;

    /**
     * @ORM\Column(type="float")
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("float")
     */
    private float $protein;

    /**
     * @ORM\Column(type="float")
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("float")
     */
    private float $cab;

    /**
     * @ORM\Column(type="float")
     * @Serializer\Expose()
     * @Serializer\Groups({"default"})
     * @Serializer\Type("float")
     */
    private float $fat;

    /**
     * @ORM\OneToMany(targetEntity=MealProduct::class, mappedBy="product")
     */
    private PersistentCollection  $mealProducts;

    ...
}

Niestety, gdy próbuję odwołać się do strony product/{id} dostaję błąd:

Cannot autowire argument $product of "App\Controller\Product\ProductController::getProduct()": it references class "App\Entity\Product" but no such service exists.

Encje są wykluczone z bycia używanych jako serwisy w configu (tak powinno być):

parameters:

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: false # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        exclude:
            - '../src/DependencyInjection/'
            - '../src/Entity/'
            - '../src/Kernel.php'
            - '../src/Tests/'

    # controllers are imported separately to make sure services can be injected
    # as action arguments even if you don't extend any base controller class
    App\Controller\:
        resource: '../src/Controller/'
        tags: ['controller.service_arguments']

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones

Już trochę nie wiem o co może chodzić. Wiem że mogę użyć ParamConverter'a albo wstrzyknąć EntityManager, ale wolę podejście w którym od razu dostaję encje.
Co dziwne, w innym projekcie (framework bundle 5.1.6) działa to bez problemu, natomiast na 5.1.8 za nic nie chce zadziałać.
Macie jakiś pomysł, co może być nie tak? Pytałem na symfony'owym slacku, ale nikt nie staty nie wpadł jaka może być przyczyna.
Na wszelki podrzucam jeszcze paczki których używam, może tam mam jakiś brak (używam symfony-skeleton):

"require": {
        "php": ">=7.4.3",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "composer/package-versions-deprecated": "1.11.99.1",
        "doctrine/annotations": "^1.11",
        "doctrine/doctrine-bundle": "^2.2",
        "doctrine/doctrine-migrations-bundle": "^3.0",
        "doctrine/orm": "^2.7",
        "jms/serializer": "^3.10",
        "symfony/console": "5.1.*",
        "symfony/dotenv": "5.1.*",
        "symfony/flex": "^1.3.1",
        "symfony/framework-bundle": "5.1.*",
        "symfony/yaml": "5.1.*"
    },
    "require-dev": {
        "symfony/maker-bundle": "^1.23",
        "symfony/stopwatch": "^5.1",
        "symfony/twig-bundle": "^5.1",
        "symfony/web-profiler-bundle": "^5.1"
    },
0

No ale przecież teraz też używasz Param Convertera, by zamienić ID na obiekt. (chyba że masz wyłączony w configu?). Domyślnie nie trzeba definiować w adnotacji, że używasz Param Convertera, dla prostych przypadków Symfony zrobi to w locie. Sprawdź, czy nie masz przypadkiem wyłączonego:

sensio_framework_extra:
    request:
        converters: true
        auto_convert: false
0

Dobra, problem rozwiązany. Okazało się że nie miałem sensio/framework-extra-bundle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1