首页 > 解决方案 > symfony 构造函数错误不存在这样的服务

问题描述

我是 symfony 的新手,我正在尝试使用构造函数,但它不起作用,我不明白为什么

error:
Cannot autowire service \App\Controller\OutputController argument $product of method &__construct() references class App\Entity\Product but no such service exists.



<?php

    namespace App\Controller;
    use App\Entity\Product;

    class OutputController  {

        private $product;
        public function __construct(Product $product)    
        {
            $this->product = $product;
        }

        public function jsonFormat() {                     
            return json_encode($this->product->toArray());
        }

    }
?>

谢谢

标签: symfony

解决方案


您使用自动装配并尝试自动装配实体。默认情况下,默认情况下,此配置行不会app/config/services.yml将它们公开为服务:

App\:
        resource: '../src/*'
        exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'

正如你所看到的,symfony 暴露了所有文件,src/*除了:

实体,迁移,测试,Kernel.php


您不应将实体公开为服务,也不应依赖控制器中的实体,为此使用服务


推荐阅读