【问题标题】:Custom form field type in SymfonySymfony 中的自定义表单字段类型
【发布时间】:2015-01-08 18:32:29
【问题描述】:

我有一个带有数组字段数据的实体(教义数组)。我想为这个实体创建一个 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
    )

【问题讨论】:

  • 添加一些代码来说明您的问题:数据转储、您已经创建的表单类型等...
  • @Ziumin 请检查我的编辑
  • 请添加您的数据示例。你应该如何编辑它?您想提供文本字段的集合还是一些高级数据网格?还是应该将其编辑为文本区域中的一些 json_encoded 数据?
  • @Ziumin 我已经编辑了我的问题,请检查。我想数据通过 REST API 以 JSON 格式输入

标签: php arrays symfony doctrine-orm


【解决方案1】:

就没有内置数据类型而言,您应该添加自定义数据类型。使用 DataTransformer 扩展简单文本字段 (TextType) 就足够了,它可以进行数组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')

欲了解更多信息,请参阅How to Create a Custom Form Field Type

【讨论】:

  • 谢谢!这正是我想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多