Опциите по подразбиране за формуляри на 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