我有一个像这样的MeetingType(我简化了它,以便于理解)
class MeetingType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'label' => 'Nom',
])
->add('agendas', CollectionType::class,
[
'entry_type' => AgendaType::class,
'entry_options' => array('label' => false),
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'label' => false,
])
->add('save', SubmitType::class, array(
'label' => 'Sauvegarder',
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Meeting::class,
));
}
}
还有这样的AgendaType
class AgendaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('orderNumber', IntegerType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Agenda::class,
));
}
}
我的议程表已嵌入我的会议表中
我的表单如下
<div class="form-row">
<div class="form-group col-md-4">
{{ form_label(form.name) }}
{{ form_widget(form.name, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
{% form_theme form _self %}
{% block _meeting_agendas_entry_name_label %}
name-label
{% endblock %}
{% block _meeting_agendas_entry_name_widget %}
name-widget
{% endblock %}
{% block _meeting_agendas_entry_widget %}
{{ form_widget(form.name) }}
{% endblock %}
{% block _meeting_agendas_entry_label %}
{{ form_label(form.name) }}
{% endblock %}
{# form_widget(form.agendas) #}
<ul class="agendas no-bullets" data-prototype="{{ form_widget(form.agendas.vars.prototype)|e('html_attr') }}">
{% for agenda in form.agendas %}
<li>
{{ form_widget(agenda.name) }}
{{ form_widget(agenda.orderNumber) }}
</li>
{% endfor %}
</ul>
我如何表现这些元素
{% block _meeting_agendas_entry_name_label %}
something
{% endblock %}
{% block _meeting_agendas_entry_name_widget %}
something
{% endblock %}
{% block _meeting_agendas_entry_widget %}
something
{% endblock %}
{% block _meeting_agendas_entry_label %}
something
{% endblock %}
为了获得此特定结果
<ul>
<li>
<div class="style-1">
<div class="style-2">
Label of agenda.name
Widget of agenda.name
</div>
<div class="style-2">
Label of agenda.orderNumber
Widget of agenda.orderNumber
</div>
</div>
</li>
<li>
<div class="style-1">
<div class="style-2">
Label of agenda.name
Widget of agenda.name
</div>
<div class="style-2">
Label of agenda.orderNumber
Widget of agenda.orderNumber
</div>
</div>
</li>
</ul>
我尝试了很多事情,但从未成功实现正确的结果。我需要更改由JavaScript处理的嵌入表单集合的 prototype (原型)。https://symfony.com/doc/3.4/form/form_collections.html。我还查阅了官方文档以及此https://github.com/symfony/symfony-docs/issues/6056,它为我提供了块标识符。
我正在使用symfony 3.4