У меня проблема с отображением формы при использовании CollectionType. Он не показывает входные данные ClientType, просто помечает «имя».
Что не так? Я не понимаю ..
SubscriptionType:
class SubscriptionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', CollectionType::class, array(
'entry_type' => ClientType::class,
'allow_add' => true,
'prototype' => true,
))
->add('enabled', null, array(
'label' => 'Activer le contrat de support'), [
'required' => false,
])
->add('startDate', DateTimePickerType::class, [
'label' => 'Date de début de la formation',
'help' => 'La formation peut être programmée en sélectionnant une date future',
])
->add('endDate', DateTimePickerType::class, [
'label' => 'Date de fin de la formation',
'help' => 'Sélectionnez la date de fin de la formation',
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Subscription::class,
'name' => null
]);
}
}
ClientType:
class ClientType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', EntityType::class, [
'class' => Clients::class,
'label' => 'Domaine du client',
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Clients::class,
'name' => null
]);
}
}
И в моем шаблоне Twig у меня есть:
{% block body %}
<h1>{{ 'Ajout d\'un client' }}</h1>
{{ form_start(form) }}
{{ form_row(form.name) }}
<ul id="name-fields-list"
data-prototype="{{ form_widget(form.name.vars.prototype)|e }}"
data-widget-tags="{{ '<li></li>'|e }}"
data-widget-counter="{{ form.children|length }}">
{% for nameField in form.name %}
<li>
{{ form_errors(nameField) }}
{{ form_widget(nameField) }}
</li>
{% endfor %}
</ul>
<button type="button"
class="add-another-collection-widget"
data-list-selector="#email-fields-list">Add another customer</button>
{{ form_row(form.enabled) }}
{{ form_row(form.startDate) }}
{{ form_row(form.endDate) }}
<script src="{{ asset('build/js/add-collection-widget.js') }}"></script>
<button type="submit" class="btn btn-primary">
<i class="fa fa-save" aria-hidden="true"></i> {{ 'Ajout d\'un client' }}
</button>
<a href="{{ path('support_admin_client_index') }}" class="btn btn-link">
<i class="fa fa-list-alt" aria-hidden="true"></i> {{ 'Retour à la liste des clients' }}
</a>
{{ form_end(form) }}
{% endblock %}
{% block javascripts %}
<script src="{{ asset('build/js/add-collection-widget.js') }}"></script>
{% endblock %}
У меня активирована опция «prototype», потому что у меня есть «allow_add», а в моей ветке - data-prototype="{{ form_widget(form.name.vars.prototype)|e }}"
Как заставить все поля ввода показывать?