Как отобразить массив данных в Symfony форме?

В Symfony есть несколько способов отображения массива данных в форме. Вот некоторые из них:

1. Использование ChoiceType: Если вам нужно отобразить массив данных как список выбора, вы можете использовать ChoiceType. Пример:

use SymfonyComponentFormExtensionCoreTypeChoiceType;
use SymfonyComponentFormExtensionCoreTypeFormType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;

class YourFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...

            ->add('your_array_field', ChoiceType::class, [
                'choices' => [
                    'Option 1' => 'option_1_value',
                    'Option 2' => 'option_2_value',
                    // ...
                ],
            ])

            // ...
        ;
    }

    // ...
}

В этом примере choices - это массив с данными, которые будут отображаться в качестве значений в выпадающем списке формы.

2. Использование CollectionType: Если вы хотите отобразить массив данных в виде списка с возможностью добавления и удаления элементов, вы можете использовать CollectionType. Пример:

use SymfonyComponentFormExtensionCoreTypeCollectionType;
use SymfonyComponentFormExtensionCoreTypeFormType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;

class YourFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...

            ->add('your_array_field', CollectionType::class, [
                'entry_type' => TextType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'prototype' => true,
                'prototype_name' => '__array_key__',
            ])

            // ...
        ;
    }

    // ...
}

В этом примере entry_type - это тип формы, используемый для отображения отдельных элементов массива. allow_add и allow_delete позволяют пользователям добавлять и удалять элементы списка, а prototype и prototype_name определяют, как будет отображаться прототип нового элемента списка.

3. Использование формы без привязки к модели: Если у вас есть просто массив данных, которые вы хотите отобразить без привязки к модели, вы можете использовать форму без привязки к модели. Пример:

use SymfonyComponentFormExtensionCoreTypeFormType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;

class YourFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...

            ->add('your_array_field', FormType::class, [
                'mapped' => false,
                'label' => false,
                'data' => [
                    'key_1' => 'value_1',
                    'key_2' => 'value_2',
                    // ...
                ],
            ])

            // ...
        ;
    }

    // ...
}

В этом примере mapped установлен в false, чтобы форма не пыталась автоматически привязаться к модели. label - это опция, определяющая, должна ли отображаться метка поля, но в данном случае она не требуется. data - это массив данных, которые будут отображаться в форме.

Это только несколько способов отображения массива данных в Symfony форме. Вы также можете создать собственные типы формы и/или шаблоны, чтобы настроить отображение в соответствии с вашими потребностями.