У меня есть коллекция форм , как в приведенном ниже коде, которая приводит к форме, которая выглядит следующим образом (с двумя примерами записей):
При нажатии кнопки «Отправить» данные, предоставленные мною в экземпляр формы (построителя), обновляются соответствующим образом.
Проблема: У меня проблема в том, что список может быть довольно длинным,поэтому мне нужен способ узнать, какие экземпляры были обновлены.
Я думал о сохранении клона исходных данных (здесь $leadPartnerList
в моем сеансе. Но это не так.
Обеспечивает ли Symfony (в частности, конструктор форм) такую функциональность из коробки? Или какое эффективное решение было бы для определения того, какие поля в форме были обновлены, а какие нет?
Моя веточка:
{% block content %}
<div>
{{ form_start(form) }}
{% for partner in lead_partners %}
{{ form_row(partner.name) }}
{% endfor %}
{{ form_end(form) }}
</div>
{% endblock content %}
Код моего контроллера:
public function overview(Request $request, \App\Utility\LeadPartnerLoader $LeadPartnerLoader)
{
$leadPartnerList = $leadPartnerLoader->loadAll();
$formBuilderData = [
'lead_partners' => $leadPartnerList
];
$listForm = $formFactory->createNamedBuilder('listForm', FormType::class, $formBuilderData)
->add('lead_partners', CollectionType::class, [
'entry_type' => LeadPartnerFormType::class,
'allow_add' => true
])
->add('submit', SubmitType::class, [
'label' => 'Submit Changes'
])
->getForm();
... handleRequest and so on and so forth...
}
и тип формы (LeadPartnerFormType):
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => LeadPartner::class,
));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class);
}
$leadPartnerList
имеет тип array
с экземплярами LeadPartner в каждой записимассива.
PLEASE ПРИМЕЧАНИЕ: Я не использую Doctrine здесь!