Я использую Symfony 2.8, но вопрос не относится к этой версии.
Допустим, у меня есть MyThingsFormType
с этим полем:
$builder->add(
'things',
ChoiceType::class,
[
'multiple' => true,
'choices_as_values' => true,
'choices' => [
'Thing no.20' => new Thing(20),
'Thing no.21' => new Thing(21),
'Thing no.22' => new Thing(22),
],
]
);
и 'data_class' => MyThings::class
.
Класс MyThings
определяется как:
class MyThings
private Thing[] $myThings
И когда я создаю свою форму, я передаю объект с некоторыми предварительно заполненными вариантами, такими как:
$form = $this->formFactory->create(
new MyThingsFormType(),
new MyThings([new Thing(21)])
);
Дело в том, что я ожидал бы, что выбор Thing no.21
будет предварительно заполнен в представлении, потому что базовый объект MyThings
, который я передаю в форму, имеет этот объект в массиве $myThings
... Я знаю, что этоне тот же объект, а просто объект с теми же данными, и, очевидно, Symfony проводит строгое сравнение, поэтому он не считает этот выбор предварительно выбранным ...
Итак,какой бы самый быстрый и чистый способ настроить это поведение, чтобы я мог заранее рассмотреть варианты, которые имеют одинаковые данные, даже если они не одинаковые объекты?