Параметры по умолчанию для форм Symfony 2 переопределяются, а не объединяются

У меня есть пользовательский тип формы, который определяет некоторые параметры attr по умолчанию:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'invalid_message' => 'The selected image does not exist',
        'attr'=>array(
            'data-image-picker'=>'true',
            'data-label'=>'Pick Image'
        ),
    ));
}

Однако, когда я использую этот пользовательский тип формы, весь массив attr заменяется тем, что определено.

$builder->add('logo','image_picker',array(
    'attr'=>array(
        'data-label'=>'Logo'
     ),
 ));

Когда форма отображается, она имеет только <input data-label="Logo" ...>

Как мне сделать так, чтобы эти параметры были объединены, а не полностью переопределены?


person Chase    schedule 11.12.2014    source источник
comment
Это ожидаемое поведение, поскольку вы переопределяете значение по умолчанию для параметра attr, а не для элементов внутри него.   -  person Markus Kottländer    schedule 22.12.2014


Ответы (1)


Вы можете найти их в массиве options, переданном в качестве второго аргумента методу buildForm вашего пользовательского типа. Вы хотели бы сделать что-то вроде этого:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $options['attr']['data-label'] = 'Logo';
    ...
person nurikabe    schedule 15.12.2014