Получение строки выбранной опции в раскрывающемся списке, которая поступает из репозитория сущностей

Я пытаюсь вставить репозиторий в форму в Symfony 3.4, а затем использовать выбранный вариант при отправке формы.

Вот код формы:

public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('text', TextareaType::class, [
                'label' => 'Text'
            ])
            ->add('category', EntityType::class, [
                'class' => Category::class,
                'choice_label' => 'name',
                'query_builder' => function(CategoryRepository $repo) {
                    return $repo->createQueryBuilder('c')
                                ->groupBy('c.name');
                }
            ])
            ->add('subcategory', EntityType::class, [
                'class' => Category::class,
                'choice_label' => 'subcategory',
                'query_builder' => function(CategoryRepository $repo) {
                    return $repo->createQueryBuilder('c')
                        ->groupBy('c.subcategory');
                }
            ]);
    }

С его помощью я могу визуализировать форму, и она хорошо выглядит. Я могу выбирать различные варианты в CategoryRepository.

{% block body %}
    {{ form_start(form) }}

        {{ form_label(form.name) }}
        {{ form_errors(form.name) }}
        {{ form_widget(form.name) }}

        {{ form_label(form.subcategory) }}
        {{ form_errors(form.subcategory) }}
        {{ form_widget(form.subcategory) }}

 {{ form_end(form) }}

При отправке при проверке с помощью Xdebug категория - это объект Category. Я вижу правильные значения (выбранные в раскрывающемся списке формы), но мне нужна только строка, например category.name. Как мне это сделать?

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

Для вашего второго вопроса с соответствующими полями ввода выбора взгляните на это: symfony.com/doc/current/form/dynamic_form_modification.html. Никакой jquery не требуется, если только не задействованы только 2 ввода выбора. Если вам нужно больше, вам нужно использовать jquery.

Chris P. Bacon 12.06.2018 17:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я уверен, что есть способы получше, но одним из решений было бы

        $category = $data->getCategory();
        $data->setCategory($category->getName());
        $data->setSubcategory($category->getSubcategory());

И чтобы исключить подкатегории, я использую jQuery / JavaScript для получения отфильтрованных результатов из контроллера / репозитория, а затем удаляю или добавляю эти параметры в HTML.

Другие вопросы по теме