【发布时间】:2012-05-16 02:50:43
【问题描述】:
我的表单 (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 抱怨实体没有这样的属性)?
【问题讨论】:
标签: php forms symfony doctrine