Aufbauend auf, was wir in den Kommentaren diskutiert, die in meiner Testumgebung gearbeitet folgenden:
In SupplierType::buildForm
:
->add('categories', EntityType::class, [
'class' => Category::class,
'choice_label' => 'name',
'group_by' => 'parent',
'multiple' => true,
'expanded' => true
])
Obwohl wüst Anpassung dies machen würde nur das Kontrollkästchen ohne Header. Dies wird hier diskutiert: https://github.com/symfony/symfony/issues/5489#issuecomment-194943922
Umsetzung der Fix von MaxE17677 die Ansicht etwas würde wie folgt aussehen:
{% extends 'base.html.twig' %}
{% form_theme form _self %}
{# @see: https://github.com/symfony/symfony/issues/5489#issuecomment-194943922 #}
{%- block choice_widget_expanded -%}
<div {{ block('widget_container_attributes') }}>
{% for name, choices in form.vars.choices %}
{% if choices is iterable %}
<label class="choice_category">
<strong>
{{ choice_translation_domain is same as(false) ? name : name|trans({}, choice_translation_domain) }}
</strong>
</label>
<div>
{% for key,choice in choices %}
{{ form_widget(form[key]) }}
{{ form_label(form[key]) }}
{% endfor %}
</div>
{% else %}
{{- form_widget(form[name]) -}}
{{- form_label(form[name], null, {translation_domain: choice_translation_domain}) -}}
{% endif %}
{% endfor %}
{%- endblock choice_widget_expanded -%}
{% block body %}
<div class="container">
{{ form_start(form) }}
{{ form_row(form.categories) }}
{{ form_end(form) }}
</div>
{% endblock %}
Vorschau:
Entscheidend ist, dass Sie group_by
Feature der ChoiceType
verwenden. Um dies mit Ihren aktuellen Entitäten zu verbinden, müssen Sie möglicherweise auch die query_builder
Einstellung von EntityType
verwenden. Etwas wie:
// ...
'query_builder' => function (EntityRepository $er) {
return $er
->createQueryBuilder('c')
->where('c.parentId = 1')
;
},
zusammen mit:
// ...
'group_by' => function ($category) {
// *pseudo-code*
return $category->getParent()->getName();
}
Also nur Unterkategorien zu Lieferanten gebunden sind? – Yoshi
Kategorie mit Struktur wie folgt aus: (parentId bestimmen, ob der Kategorie Kopf Kategorie oder Unterkategorie ist) id, category, parentId - wo parentIds Wert sein kann: 0 - Kopf Kategorie 1 - Subkategorie usw. – Dakotha
Wie soll ich reagieren auf Das? Sie stellen eine Frage, ich versuche, weitere Informationen zu erhalten, Sie antworten, indem Sie die gleichen Informationen aus der Frage wiederholen. Hilf mir, dir zu helfen ... – Yoshi