Skip to content

[Form] Cannot use object of type Closure as array #33188

Closed
@umpirsky

Description

@umpirsky

Symfony version(s) affected: 4.2.11

How to reproduce

Have type defined like this:

class MyDateAndTimeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('time', TimeType::class, $options);

        $builder->addModelTransformer(new MyDateAndTimeToDateTimeTransformer());
    }

    public function getBlockPrefix()
    {
        return 'data_and_time';
    }
}

You get this error when creating the form:

Cannot use object of type Closure as array

  at vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php:80

The problem is passing options to $builder->add('time', TimeType::class, $options) which carries:

  "empty_data" => Closure(FormInterface $form) {#2763 ▼
    class: "Symfony\Component\Form\Extension\Core\Type\FormType"
    this: FormType {#2569 …}
    parameters: {▶}
    file: "vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/FormType.php"
    line: "140 to 142"
  }

This used to work in 4.1

Additional context
Suspected changeset #29182.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions