Symfony2 -表单实体字段与多个,数据不保留后选择设置


Symfony2 - form entity field with multiple , data not preserved after choices set

我使用表单来编辑一些数据。其中一个表单字段:

$builder ->add('cities', 'entity', array(
    'class'    => 'Vendor'SomeBundle'Entity'City',
    'multiple' => true
));

一切都很好-我有一些预选的城市根据数据库。

现在我想将选择限制为特定国家的城市。所以我得到了城市的集合并设置了'choices'选项:

$builder ->add('cities', 'entity', array(
    'class'    => 'Vendor'SomeBundle'Entity'City',
    'multiple' => true,
    'choices'  => $citiesCollection
));

选择列表有限,但没有选择城市。

我尝试使用'data'选项设置这些预选城市,但这也不起作用

$builder ->add('cities', 'entity', array(
    'class' => 'Vendor'SomeBundle'Entity'City',
    'multiple' => true,
    'choices'  => $citiesCollection
    'data'     => $citiesSelected
));

尝试不同的方法,传递ArrayCollection,数组,键数组,但没有工作…这有可能吗?

工作解决方案-设置'query_builder"选项而不是'choices'

$builder ->add('cities', 'entity', array(
    'class'    => 'Vendor'SomeBundle'Entity'City',
    'multiple' => true,
    'query_builder'  => $citiesQueryBuilder
));

现在呈现的表单已选定城市

我认为将$citiesSelected数组分配给分配给表单的基本实体的cities字段将会使技巧