Пользовательский тип поля формы в Symfony

0

У меня есть объект с данными поля массива (массив доктрины). Я хочу создать форму symfony для этой сущности, и я хотел бы включить в нее это поле.

Итак, возникает вопрос: есть ли способ использовать пользовательский тип как поле формы в Symfony?

Это поле формы:

/**
 * @var array
 *
 * @ORM\Column(name="dates", type="array")
 */
private $dates;

Это formType:

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('dates') // i want to use ->add('dates','array') but type 'array' is not allowed
        ;
    }

Это данные, которые я хочу сохранить:

$dates = array(
        'birthday' => \DateTime('1995'),
        'wedding' => \DateTime('2001'),
        // and so on
    )
  • 0
    Добавьте некоторый код, чтобы проиллюстрировать ваш вопрос: дампы данных, тип формы, которую вы уже создали, и т. Д ...
  • 0
    возможный дубликат поля формы ассоциативного массива Symfony
Показать ещё 3 комментария
Теги:
arrays
doctrine2

1 ответ

1
Лучший ответ

Поскольку нет встроенного типа данных, вы должны добавить свой собственный. Этого достаточно, чтобы расширить простое текстовое поле (TextType) с помощью DataTransformer, который может преобразовать массив <-> json.

Предположим, ваш пользовательский тип будет YourBundle\Form\Type\JSONArrayType. Чтобы использовать его в своей форме в качестве обычного поля, вы должны зарегистрироваться в конфигурации вашего пакета:

json_array_type.service:
class: YourBundle\Form\Type\JSONArrayType
tags:
  - { name: form.type, alias: json_array_type }

И тогда вы можете использовать его в своем виде типа, например $builder->add('dates', 'json_array_type')

Дополнительные сведения см. В разделе Как создать тип поля пользовательской формы

  • 0
    Спасибо! это именно то, что я искал

Ещё вопросы

Сообщество Overcoder
Наверх
Меню