Получение строки выбранного параметра в раскрывающемся списке, полученном из хранилища объектов - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь вставить хранилище в форму в 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');
                }
            ]);
    }

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

{% 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.

1 Ответ

0 голосов
/ 13 июня 2018

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

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

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

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