我想构建一个新的表单类型来处理我的问题之一。
但是,使用此代码:
<?php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\DataTransformerInterface;
/**
* Entity hidden custom type class definition
*/
class EntityHiddenType extends AbstractType
{
/**
* @var DataTransformerInterface $transformer
*/
private $transformer;
/**
* Constructor
*
* @param DataTransformerInterface $transformer
*/
public function __construct(DataTransformerInterface $transformer)
{
$this->transformer = $transformer;
}
我收到此错误:
无法自动装配服务“ App \ Form \ Type \ EntityHiddenType”:参数 方法“ __construct()”的“ $ transformer”引用接口 “ Symfony \ Component \ Form \ DataTransformerInterface”,但没有此类服务 存在。您是否创建了实现此接口的类?
我试图关闭自动接线,但是我不能插入接口吗?
为什么我不能自动连接此Symfony界面?
答案 0 :(得分:2)
如果您在自己的类(实现DataTransformerInterface
)中拥有DataTransformer,则必须注入此类(您的实现),而不是接口。
请参阅https://symfony.com/doc/current/form/data_transformers.html#using-the-transformer
您当然可以为特定的实现对接口使用别名-但是,在注入接口时,您只能拥有一个DataTransformer。
答案 1 :(得分:-1)
因为DataTransformerInterface无法自动安装。
尝试一下,以查看自动装配类/接口
bin/console debug:autowiring
使其工作的唯一方法是创建一个实现DataTransformerInterface的服务类
通过在service.yml中配置新服务来注入新服务