我有表格 ( AbstractType
) 映射到一个(教义坚持的)实体。
该实体有一个属于教义类型的字段array
。
根据 symfony 的文档,应该可以将表单集合字段映射到 PHP array
,但显然当表单映射到实体时它不起作用。Symfony 期望该字段是一个关系,但它只是一个array
.
这不是实际代码,只是一个示例:
考虑这个(教义坚持的)实体:
class Article
{
...
/**
* @ORM\Column(type="array")
*/
protected $tags;
...
}
而这个实体(不受教义管理):
class Tag
{
...
public $name;
...
}
而这种形式类型:
class ArticleType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('tags', 'collection', array('type' => new TagType()));
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => '\Entity\Article',
);
}
}
标签的表单类型:
class TagType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name', 'text');
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => '\Entity\Tag',
);
}
}
当试图实例化 ArticleType 学说时,会抱怨以下内容:
Expected argument of type "\Entity\Tag", "array" given
在文件中:
vendor/symfony/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php 在第 47 行
甚至可以在不编写自己的字段类型的情况下做我想做的事吗?
更新:也许我应该改写我的问题:我如何告诉 symfony 不要将此字段映射到任何内容(如果我更改其名称 symfony 抱怨该实体没有这样的属性)?