Я получаю некоторые данные из API в моем приложении Symfony 2 с помощью Guzzle. Эти данные правильно отображаются в мою модель. Модель представляет собой объект Contact
с некоторыми свойствами. Одним из тех, кто собственности является массивом ContactMethod
сделано как этотSymfony2 массив настраиваемых объектов в поля формы
/**
* @SerializedName("methods")
* @Type("array<My\Bundle\Model\ContactMethod>")
*/
private $methods;
ContactMethod
The объект имеет только два свойства: type
и value
class ContactMethod {
/**
* @SerializedName("type")
* @Type("string")
*/
private $type;
/**
* @SerializedName("value")
* @Type("string")
*/
private $value;
... setters and getters ...
Я создал ContactType
с его buildForm
функции для того, чтобы показать все свойства Contact
в форме. Но когда дело доходит до отображения свойства methods
, я хотел бы иметь TextInput
для каждого из ContactMethod
и этот ввод должен принимать type
в качестве метки и value
.
class ContactType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options = array())
{
$builder
->add(...all the other simple fields...)
->add(...what shall I add here ?)
мне это нужно, чтобы работать в обратном направлении: когда все текстовые входы заполнены и представлены, поля должны быть упакованы вместе в массив ContactMethod
, так что я могу reserialize и отправить обратно данные в API.
Я попытался поиграть с пользовательскими типами форм, а также с Data Transformers, но не смог найти решение.