Задать вопрос
  • Как указать нескольких разделов при добавлении товара?

    @jetdigger Автор вопроса
    placeholder потерялся по причине https://symfony.com/doc/current/reference/forms/ty...

    This option determines whether or not a special "empty" option (e.g. "Choose an option") will appear at the top of a select widget. This option only applies if the multiple option is set to false.
  • Как указать нескольких разделов при добавлении товара?

    @jetdigger Автор вопроса
    Получилось что-то отдалённо напоминающее с потерявшимся placeholder:

    ->add('categories', EntityType::class, [
        'class' => Category::class,
        'choices' => $categories,
        'choice_label' => function (Category $category = null) {
            return null !== $category ? str_repeat('--', $category->getLevel()).' '.$category->getTitle() : '';
        },
        'choice_value' => function (Category $category = null) {
            return null !== $category ? $category->getId() : '';
        },
        'label' => false,
        'multiple' => true,
        'placeholder' => '- Находится в -',
     ])


    И как всё-таки реализовать несколько выпадающих списков?
  • Как указать нескольких разделов при добавлении товара?

    @jetdigger Автор вопроса
    Можно суть :) Пробовал через CollectionType Field, но, видимо, что-то неправильно делаю, т.к. не получилось.

    /**
         * @param FormBuilderInterface $builder
         * @param array                $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options): void
        {
            //  Формируем $categories
    
            $builder
                ->add('categories', CollectionType::class, [
                    'entry_type' => ChoiceType::class,
                    'entry_options' => [
                        'choices' => $categories,
                        'choice_label' => function (Category $category = null) {
                            return null !== $category ? str_repeat('--', $category->getLevel()).' '.$category->getTitle() : '';
                        },
                        'choice_value' => function ($category = null) {
                            return $category instanceof Category ? $category->getId() : '';
                        },
                        'label' => false,
                        'placeholder' => '- Находится в -',
                    ],
                ])
            ;
        }


    Если убрать CollectionType, т.е. сделать одно поле с выпадающим списком, код рабочий. А вот как несколько...

    Как написано на странице https://symfony.com/doc/current/reference/forms/ty...:

    In both cases, no input fields would render unless your emails data array already contained some emails.


    А т.к. $product->getCategories() пустой массив, то и поля выбора разделов не выводятся. Я так думаю, причина в этом.