Хобрук: Ваш путь к мастерству в программировании

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

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

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

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

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

Это тип формы:

 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
    )

  • Добавьте немного кода, чтобы проиллюстрировать ваш вопрос: дампы данных, тип формы, который вы уже создали, и т. д. 08.01.2015
  • возможный дубликат поля формы ассоциативного массива Symfony 08.01.2015
  • @Ziumin проверьте, пожалуйста, мои правки 09.01.2015
  • Добавьте пример ваших данных, пожалуйста. И как его редактировать? Вы хотите предоставить набор текстовых полей или расширенную сетку данных? Или его следует редактировать как некоторые данные json_encoded в текстовой области? 09.01.2015
  • @Ziumin, я отредактировал свой вопрос, проверьте, пожалуйста. Я предполагаю, что данные будут поступать в формате JSON через REST API. 09.01.2015

Ответы:


1

Поскольку встроенного типа данных нет, необходимо добавить свой собственный. Достаточно расширить простое текстовое поле (TextType) с помощью DataTransformer который может выполнять преобразование array‹->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')

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

08.01.2015
  • Спасибо! это именно то, что я искал 10.01.2015
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..