Symfony 4.1 древовидная форма без плагинов - PullRequest
0 голосов
/ 14 ноября 2018

Как я могу отобразить элементы в элементе управления EntityType следующим образом:

Group 1
parent
  - child
  -- second_child
  - child
  - child
  -- second_child
Group 2
  parent
   - child
   -- second_child
   ------third_child
parent
   - child

У меня есть таблица, которая имеет отношение к себе, у этой сущности есть родительское поле, которое определяет родительские и дочерние поля для следующих дочерних элементов, поле уровня, которое определяет глубину вложения. Я попытался вручную заполнить массив элементами такой структуры, но он не записал в базу данных:

$data = [];
$data = ['Group 1']['parent'] = $entityElement;
$data = ['Group 1']['- child'] = $entityElement->getChildren()[0];
$data = ['Group 1']['-- second_child'] = $entityElement->getChildren()[1];

->add('elements', ChoiceType::class, [

    'mapped' => false,
    'expanded' => false,
    'multiple' => true,

    'choices' => $options['elements'],
    'placeholder' => false,
])

Я попытался создать запрос для этого, но он не работает, элементы перепутаны, даже когда я добавляю addOrderBy ('c.parent')

        ->add('elements', EntityType::class, [
            'class' => Category::class,
            'choice_label' => function($item) { return $item->getIndentName(); },
            'expanded' => false,
            'multiple' => true,
            'query_builder' => function (ElementRepository $er) {
                return $er->createQueryBuilder('e')->groupBy('e.parent');
            },
            'group_by' => function ($choiceValue) {
                if (is_null($choiceValue->getBrand())) {
                    return '';
                }
                return $choiceValue->getBrand()->getName();
            },
        ])

Как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...