我是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());
}
}
?>
谢谢
答案 0 :(得分:1)
您使用自动装配,并尝试自动装配实体。默认情况下,此配置行从默认app/config/services.yml
中将它们不公开为服务:
App\:
resource: '../src/*'
exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'
如您所见,symfony公开了src/*
中的所有文件,但以下文件除外:
实体,迁移,测试,Kernel.php
您不应将实体公开为服务,也不应依赖控制器中的实体,Use services for that